|
图形用户界面程序是事件驱动程序。当程序进入 gtk_main() 函数后,等待事件的发生,一旦发生某个事件,相应的信号将产生。如果程序中定义了相应的消息处理函数,系统就会自动进行调用相应的消息处理函数。消息处理函数 ( 或称 回调函数 )的原型是:
void callback_func (GtkWidget *widget, gpointer func_data); widget 指向要接收消息的控件;
func_data 指向消息产生时传递给函数的数据。
g_signal_connect() 函数原型:
gulong g_signal_connect ( GtkObject *object, gchar *name, Gcallback, callback_func, gpointer func_data );
参数说明:
callback_func : 事件发生后要执行的回调函数 func_data : 传递给回调函数的数据,与 callback_func() 的第二个参数相同 函数说明:
该函数的返回值用于区分一个空间的一个事件对应的多个处理函数。一个空间上可以发生多个事件,比如单击一个按钮,双击一个按钮。对于一个控件上的每个事件可以有 0 个, 1 个或者多个处理函数。该事件发生时,按声明的顺序逐个调用这些函数。对应于某个事件,如果空间没有定义处理函数,那么事件发生时将没有响应,系统忽略此事件。
一个与 g_signal_connect() 类似的函数:
gint g_signal_connect_swapped (GtkObject *object, gchar *name, GCallback callback_func, GtkObject *slot_object); 此函数的第 4 个参数指向一个 GTK+ 控件的指针。它与 g_signal_connect() 的区别在于相应的回调函数只有一个参数:
void callback_func (GtkObject *object); 通常 object 指向一个控件。 |
|