【C语言】Windows上用GTK写GUI程序

要使用GTK开发一个Windows图形用户界面程序,需要首先设置GTK开发环境。这通常包括安装GTK库和它的依赖,以及配置编译器和工具链。可以选择使用纯C语言和GTK库或者使用支持GTK绑定的其他语言,如Python、C++或Rust。

1. 安装GTK开发库

在Windows上,这可以通过MSYS2这样的环境来完成。通过MSYS2安装GTK的步骤通常包括安装基础系统、更新包管理器、然后使用包管理器安装GTK。

可参考【C++】Windows编译FileZilla Client-CSDN博客

2. 创建一个新的C文件(例如gtk-test.c

写下以下代码:

cpp 复制代码
#include <gtk/gtk.h>

static void print_hello(GtkWidget *widget, gpointer data) {
 g_print("Hello World\n");
}

static void activate(GtkApplication *app, gpointer user_data) {
 GtkWidget *window;
 GtkWidget *button;

 // 创建一个窗口
 window = gtk_application_window_new(app);
 gtk_window_set_title(GTK_WINDOW(window), "Window");
 gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);

 // 创建一个按钮,绑定点击事件
 button = gtk_button_new_with_label("Hello World");
 g_signal_connect(button, "clicked", G_CALLBACK(print_hello), NULL);
 gtk_window_set_child(GTK_WINDOW(window), button);

 // 显示窗口和按钮
 gtk_window_present(GTK_WINDOW(window));
}

int main(int argc, char **argv) {
 GtkApplication *app;
 int status;

 // 创建一个GtkApplication实例
 app = gtk_application_new("org.gtk.example", G_APPLICATION_DEFAULT_FLAGS);
 g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
 status = g_application_run(G_APPLICATION(app), argc, argv);
 g_object_unref(app);

 return status;
}

3. 编译该程序

bash 复制代码
gcc `pkg-config --cflags gtk4` -o my-gtk-app gtk-test.c `pkg-config --libs gtk4`

`pkg-config` 命令用于自动检索GTK库的编译和链接标志。

4. 运行编译好的程序

bash 复制代码
 ./my-gtk-app.exe

当你执行这个程序时,应该会看到一个有"Window"标题的新窗口。请记住这只是一个非常基础的示例。实际上,开发一个丰满的Windows GUI程序还需要处理很多其他的事情,比如事件处理、布局管理、用户输入和更多。另外,如果你不想手动处理上述所有步骤,你可以使用一个集成的开发环境(IDE),比如 Microsoft Visual Studio 或者 GNOME Builder,这些IDE通常对GTK开发有更好的支持,并提供图形化辅助工具来简化开发过程。

5. 确保程序是作为"窗口应用程序(Windows Application)"编译

在Windows上使用GTK开发的应用程序通常会通过某种形式的兼容层进行编译,比如 MSYS2、Cygwin 或是直接在 Windows 上的 MinGW。如果在运行GTK程序时出现一个命令行窗口(通常是一个黑色的窗口),这可能是因为程序是作为控制台应用程序编译的。

要避免这种情况,需要确保你的程序是作为"窗口应用程序(Windows Application)"编译的,而不是作为"控制台应用程序(Console Application)"。在使用GCC编译器时,可以通过指定 -mwindows 链接器选项来实现这一点。这个选项告诉链接器正在创建一个窗口程序,它不应该分配一个控制台窗口。

以下是编译GTK Windows程序时的GCC命令示例:

bash 复制代码
gcc `pkg-config --cflags gtk4` -o my-gtk-app gtk-test.c `pkg-config --libs gtk4` -mwindows

在上面的命令中:

  • pkg-config --cflags gtk4 获取GTK 4库相关的编译标志。

  • pkg-config --libs gtk4 获取GTK 4库相关的链接标志。

  • -mwindows 是防止控制台窗口出现的关键选项。

确保在编译时包含 -mwindows 选项,这样编译出来的程序在执行时就不会出现额外的命令行窗口。

如果你是使用其他构建系统(如CMake、Meson等)或集成开发环境(IDE),请确保在构建配置中也指定了相应的选项以生成窗口应用程序。

相关推荐
namekong828 分钟前
无痛升级 Windows 11 24H2 不支援硬体也可轻松绕过
windows
666xiaoniuzi33 分钟前
深入理解 C 语言中的内存操作函数:memcpy、memmove、memset 和 memcmp
android·c语言·数据库
satan–02 小时前
R语言的基本语句及基本规则
开发语言·windows·r语言
Eternal-Student2 小时前
预处理、编译、汇编、链接
linux·汇编·windows
学无止境\n3 小时前
[C语言]指针和数组
c语言·数据结构·算法
sp_wxf3 小时前
Stream流
linux·服务器·windows
jyan_敬言4 小时前
【Linux】Linux命令与操作详解(一)文件管理(文件命令)、用户与用户组管理(创建、删除用户/组)
linux·运维·服务器·c语言·开发语言·汇编·c++
bcdaren5 小时前
《Windows PE》4.2 绑定导入表
c语言·汇编·windows·pe
芯的一天5 小时前
windows下DockerDesktop命令行方式指定目录安装
windows·docker
jmlinux5 小时前
环形缓冲区(Ring Buffer)在STM32 HAL库中的应用:防止按键丢失
c语言·stm32·单片机·嵌入式硬件