GTK+ 图形编程 一个简单的例子
gtkwin.c
#include<gtk/gtk.h>
void hello(GtkWidget *widget,gpointer *data) /*定义回调函数hello,单击按钮时系统自动调用*/
{
g_print("button clicked and data = %s\n",(char *)data);
}
void destroy(GtkWidget *wiget,gpointer *data)/*定义回调函数destroy,关闭窗口时系统自动调用*/
{
gtk_main_quit();
}
int main(int argc,char * *argv)
{
GekWidget *window;/*定义指向控件的指针*/
GekWidget *button;
gtk_init(&argc,&argv);/*初始化图形显示环境*/
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);/*创建窗口*/
/*设置当关闭窗口时,要执行的回调函数*/
g_signal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC(destroy),NULL);
gtk_container_border_width(GTK_CONTAINER(window),20);/*设置窗口属性*/
button=gtk_button_new_with_label("hello world");/*创建按钮*/
/*设置当单击按钮时,要执行的回调函数*/
g_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(hello),"I am from button");
gtk_container_add(GTK_CONTAINER(window),button);/*将按钮加入到窗口中*/
/*显示按钮和窗口*/
gtk_widget_show(button);
gtk_widget_show(window);
/*进入消息处理循环*/
gtk_main();
return 0;
}
总体步骤如下:
定义回调函数
定义窗口和控件指针
初始化图形显示环境
创建窗口和控件,并连接要执行的回调函数
将控件加入到窗口中
显示窗口和控件
进入消息处理循环
编译并运行:
#gcc -o gtkwin gtkwin.c `pkg --config --libs --cflags gtk+-2.0`
#./gtkwin
注意:编译命令中的"pkg --config --libs --cflags gtk+-2.0"两边的是反引号。