前面创建的窗口只能关闭,但是不能让程序正常退出,那么如何让你的程序正常退出呢? 首先,我们需要能使用用程序结束的函数: 结束应用程序
1.
名称:: |
gtk_main_quit |
功能: |
结束应用程序 |
头文件: |
#include <gtk/gtk.h> |
函数原形: |
void gtk_main_quit(void); |
参数: |
无 |
返回值: |
无 |
gtk_main_quit函数可以结束程序
若想要应用程序能够正常退出,仅仅有能使程序的函数是不够的,我们还需要了解几个概念:事件、信号、回调函数。 事件:用户对程序的操作,比如按一下鼠标、拖动窗口、按下窗口的按键等等。 信号:事件发生时,相应的构件将给应用程序的回呼函数提供信号 回调函数:当需要对信号进行处理时,需要用GTK+登记回调函数,并将它和构件联系在一起。构件可以登记回调函数,回调函数可与多个构件联系在一起。
GTK常用的回调函数有下面两个:
2.
名称:: |
g_signal_connect |
功能: |
信号登记函数 |
头文件: |
#include <gtk/gtk.h> |
函数原形: |
gulong g_signal_connect(gpointer *object,const gchar *name,GCallback func,gpointer data); |
参数: |
object 发出信号的控件
name 信号名称
func 回调函数(对信号要采取的动作)
data 传给回调函数的数据 |
返回值: |
|
g_signal_connect用于登记一个GTK+信号,其功能有点像普通信号登记函数signal.当某个空间发出信号,程序就会去执行由g_signal_connect登记的回调函数。
3.
名称:: |
g_signal_connect_swapped |
功能: |
信号登记函数 |
头文件: |
#include <gtk/gtk.h> |
函数原形: |
gulong g_signal_connect_swapped(gpointer *object,const gchar *name,GCallback func,gpointer *widget); |
参数: |
object 发出信号的控件
name 信号名称
func 回调函数(对信号要采取的动作)
winget 传给回调函数的数据 |
返回值: |
|
g_signal_connect_swapped() 的作用和 g_signal_connect() 相同,只是回调函数只用
一个参数,一个指向 GTK 对象的指针。所以当使用这个函数连接信号时,回调函 数应该是这样的形式 void callback_func( GtkObject *object ); 这个对象常是一个构件。然而我们通常不用函数 g_signal_connect_swapped() 设 置连接。它们常被用在只接受一个单独的构件或者对象的回调函数中作为参数,如 同我们的 helloworld 示例中那样。 拥有两个设置信号连接函数的目的是简单的允许回调函数有不同数目的参数。 GTK 库中许多函数仅接受一个单独的构件指针作为其参数,所以对于这些函数你要 用 g_signal_connect_swapped(),然而对你自己定义的函数,你需要附加的数据 提供给你的回调函数。
|