在线程中使用图形界面函数,比如gtk之类的函数,都需要在调用之前加
gdk_threads_enter();
调用完后加上
gdk_threads_leave();
名称::
gtk_widget_hide
功能:
隐藏一个构件
头文件:
#include <gtk/gtk.h>
函数原形:
void gtk_widget_hide (GtkWidget *widget);
参数:
widget 构件
返回值:
无
gtk_widget_show()
在gtk中,一个构件的显示要经过两个必要的步骤:1.realize2.maprealize是创建对应的gdk窗口,同时也会创建对应的x窗口而map则是调用gdk_window_show()把已经创建的gdk窗口在屏幕上显示出来,使窗口变得可见。如果它的派生构件没有覆盖show这个信号的方法,gtk_widget_show()引发信号然后调用默认的gtk_widget_real_show而gtk_widget_real_show这个方法又会调用gtk_widget_map(), gtk_widget_map先检查构件的gdk窗口有没有realize,如果没有,则先realize这个窗口,然后才调用gdk_window_show使的窗口可见。窗口可见的话,就可以在上面进行各种绘制了。要窗口马上显示出来,要用gtk_widget_show_now,它会添加一个回调函数来捕获map_event,如果没有捕获该事件,它会一直调用主循环迭代来强制等待该事件信号
Timeout函数会隔一定时间(毫秒)就自动地调用一次。下面的函数用于添加一个Timeout函数。定时函数类似于回调函数(我们将在下节介绍)。 1. 可以用下面的函数停止调用定时函数: 2. 还可以让回调函数返回FA L S E或0来停止调用定时函数。也就是说,要想让函数继续调用,必须让它返回一个非0值或T R U E。 定期调用的回调函数声明应该是下面的形式: gint timeout_callback( gpointer data );
要使一个按钮执行一个动作,我们需设置信号和信号处理函数之间的连接。可以这样使用函数来设置连接:
gulong g_signal_connect( gpointer *object, const gchar *name, GCallback func, gpointer func_data ); |
第一个参数是要发出信号的构件,第二个参数是你想要连接的信号的名称,第三个参数是信号被捕获时所要调用的函数,第四个参数是你想传递给这个函数的数据。
void callback_func( GtkWidget *widget, gpointer callback_data ); |
第一个参数是一个指向发出信号的构件的指针,第二个参数是一个指向数据的指针,就是上面 g_signal_connect() 函数的最后一个参数传进来的数据。
注意上面回调函数的声明只是一般的形式,有些构件的特殊信号会用不同的调用参数。
gulong g_signal_connect_swapped( gpointer *object, const gchar *name, GCallback func, gpointer *slot_object ); |