下面我们把之前的程序稍微改动一下,使它可以正常退出。
/*base2.c*/
#include <gtk/gtk.h>
int main(int argc, char* argv[])
{
GtkWidget *window;
gtk_init(&argc,&argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(GTK_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
gtk_widget_show(window);
gtk_main();
return FALSE;
}
$ gcc -o base2 base2.c 'pkg-config --cflags --libs gtk+-2.0'
$./base2
其中destroy为GTK+最基本信号之一,当关闭窗口时,发出该信号。还有一个是delete_event, 当将要关闭窗口时,发出该信号。
程序中添加了gtk_signal_connect函数,当用户关闭窗口时gtk_signel_connect函数调用gtk_main_quit函数来关闭程序。
大家也可以编写回调函数,在回调函数里结束程序。这样做的好处是当用户试图退出一个程序时,程序可以提示你是否真的退出。
自己编写回调函数的程序例子:
/*base2.c*/
#include <gtk/gtk.h>
ginit destroy(GtkWidget *,gpointer)
int main(int argc, char* argv[])
{
GtkWidget *window;
gtk_init(&argc,&argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(GTK_OBJECT(window),"destroy",G_CALLBACK(destroy),NULL);
gtk_widget_show(window);
gtk_main();
return 0;
}
ginit destroy(GtkWidget *widget,gpointer gdata)
{
g_print(“Quitting!/n”);
gtk_main_quit();
return(FALSE);
}
$ gcc -o base3 base3.c 'pkg-config --cflags --libs gtk+-2.0'
$./base3
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。