【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),请确保在构建配置中也指定了相应的选项以生成窗口应用程序。

相关推荐
黄豆匿zlib9 小时前
Python中的其他数据结构:除了列表和元组,还有哪些?
数据结构·windows·python
C++ 老炮儿的技术栈9 小时前
VSCode -配置为中文界面
大数据·c语言·c++·ide·vscode·算法·编辑器
90wunch9 小时前
更进一步深入的研究ObRegisterCallBack
c++·windows·安全
刃神太酷啦9 小时前
聚焦 string:C++ 文本处理的核心利器--《Hello C++ Wrold!》(10)--(C/C++)
java·c语言·c++·qt·算法·leetcode·github
啾啾Fun9 小时前
Python类型处理与推导式
开发语言·windows·python
Serendipity_筱楠9 小时前
Windows安装部署jenkins
windows·ci/cd·自动化·jenkins·测试
FL16238631299 小时前
[windows工具]PDFOCR识别重命名工具1.3 版本使用教程及注意事项
windows
midsummer_woo10 小时前
windows系统安全加固
windows·安全·系统安全
code bean10 小时前
【WPF】WPF 中 `DisplayMemberPath` 与 `SelectedValuePath` 的深入理解与实战应用
windows·wpf
物联网嵌入式小冉学长10 小时前
10.C S编程错误分析
c语言·stm32·单片机·算法·嵌入式