#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;
}