在我们详细分析helloworld程序之前,我们会讨论信号和回调函数。GTK 是一个事件驱动的工具包,意味着它会等在 gtk_main() 那里,直到下一个事件发生,才把控制权传给适当的函数。
要使一个按钮执行一个动作,我们需设置信号和信号处理函数之间的连接。可以这样使用函数来设置连接:
gulongg_signal_connect( gpointer *object, const gchar *name, GCallback func, gpointer func_data ); |
第一个参数是要发出信号的构件,第二个参数是你想要连接的信号的名称,第三个参数是信号被捕获时所要调用的函数,第四个参数是你想传递给这个函数的数据。
void callback_func( GtkWidget *widget, gpointer callback_data ); |
第一个参数是一个指向发出信号的构件的指针,第二个参数是一个指向数据的指针,就是上面g_signal_connect() 函数的最后一个参数传进来的数据。
注意上面回调函数的声明只是一般的形式,有些构件的特殊信号会用不同的调用参数。
gulongg_signal_connect_swapped( gpointer *object, const gchar *name, GCallback func, gpointer *slot_object ); |
void callback_func( GtkObject *object ); |