废话不多说,下面的模板代码展示了如何初始化和绘制主窗口。
#include <gtk/gtk.h>
// 程序启动时由activate 事件触发的回调函数
static void _activate(GApplication *app, gpointer user_data) {
(void)user_data;
GtkWidget *window = NULL;
window = gtk_application_window_new(GTK_APPLICATION(app));
// 进行主窗口设置
gtk_window_set_title(GTK_WINDOW(window), "main window");
gtk_window_set_default_size(GTK_WINDOW(window), 800, 600);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_widget_show(window);
}
int main(int argc, char **argv) {
GtkApplication *app = NULL;
int status = 0;
app = gtk_application_new("main.window", G_APPLICATION_FLAGS_NONE);
// 通过 "activate" 事件进行主窗口设置
g_signal_connect(app, "activate", G_CALLBACK(_activate), NULL);
// 运行程序
status = g_application_run(G_APPLICATION(app), argc, argv);
g_object_unref(app);
return status;
}
编译命令:
gcc -o win-demo main.c `pkg-config --cflags --libs gtk+-3.0` -export-dynamic
效果图: