Linux下的GTK图形界面编程
*/
本文链接地址:http://www.oyaya.net/fanwen/view/143509.html
window = gtk_window_new (GTK_WINDOW_TOPLEVEL); /*
创建一个新的窗口*/gtk_widget_show (window); /*
显示窗口*/gtk_main (); /*
进入睡眠状态,等待事件激活*/return(0);
}
从上面的程序可以看出,
GTK是一个事件驱动工具包,当它运行到gtk_main()函数时会自动睡眠,直到有事件发生,控制权转让给相应的函数调用,在该函数中可以用标准C写出相应的事物逻辑。这与windows 上的程序处理是一样的。对窗口对象上发生的事件(如按下鼠标,激活键盘等),
GTK也有相应的消息信号产生。这时就需要程序员创建一个信号处理器来捕获该信号,并告诉GTK程序事件发生后调用哪个回调函数。信号处理器的创建函数定义如下:gint gtk_signal_connect( GtkObject *object, gchar *name,
GtkSignalFunc callback_func, gpointer func_data );
返回值是一个区分同一对象中的事件与不同回调函数的关联标签。这样可以做到一个对象的一个信号就有任意多个回调函数,并且每一个都会按照声明的顺序执行。函数调用的第一个参数是产生信号的widget组件(即按钮等窗口构件),而name则是希望捕获的信号或事件的名称,callback_func则是事件发生后所调用的回调函数名称,而第四个参数func_data则是传递给回调函数的参数。
回调函数要定义在主程序的前面,它们的一般格式都如下所示:
void callback_func( GtkWidget *widget, gpointer func_data );
调用下面这个方法将允许你将回调函数与事件的关联断开:
void gtk_signal_disconnect( GtkObject *object, gint id );
该函数的第二个参数就是上述gtk_signal_connect()函数的返回值,即关联标签。第一个参数指向了去除关联的对象名称。这样可以做到断开事件与回调函数的关联,使得事件发生后,不会调用相关的回调函数。
《Linux下的GTK图形界面编程(第2页)》