#include<gtk/gtk.h>
int main(int argc, char **argv)
{
GtkWidget *window;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main();
return 0;
}
編譯:gcc gtk1.c -o gtk `pkg-config --cflags --libs gtk+-3.0`
解析:gtk_init(&argc,&argv); 把命令行參數傳給GTK+,這個函數需要在GTK+函數之前調用。
window=gtk_window_new(GTK_WINDOW_TOPLEVEL); 用來生成一個標準的有框架的窗口, 參數同樣可以爲GTK_WINDOW_POPUP 生成一個適用與對話框的無框架的對話框
最後要調用 gtk_widget_show(window); 顯示窗口
2.事件、信號、回調函數
回調函數原型 void a_callback_function(GtkWidget *widget, gpointer data);
其中第一個參數是指向發出信號的構件的指針,第二個參數是當你選擇鏈接回調函數時自己選擇的一個任意指針。
鏈接回調函數原型 gulong g_signal_connect(gpointer *object, const gchar *name,GCallback func,gpointer user_data );
參數含義依次爲,構件、信號名、回調函數指針和一個任意指針;
例如: g_signal_connect(button,"clicked",G_CALLBACK(button_clicked),"Button 1");
#include<stdio.h>
static int count=0;
void button_clicked(GtkWidget *button,gpointer data)
{
printf("%s pressed %d time(s)\n",(char *)data,++count);
}
int main(int argc, char **argv)
{
GtkWidget *window;
GtkWidget *button;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
button=gtk_button_new_with_label("hello,world!");
gtk_container_add(GTK_CONTAINER(window),button);
g_signal_connect(button,"clicked",G_CALLBACK(button_clicked),"Button 1");
g_signal_connect(window,"destory",G_CALLBACK(gtk_main_quit),NULL);
gtk_widget_show(button);
gtk_widget_show(window);
gtk_main();
return 0;
}