专栏中心

EEPW首页 > 专栏 > 回调函数

回调函数

发布人:chen3bing 时间:2024-06-22 来源:工程师 发布文章

代码:

#include <gtk-2.0/gtk/gtk.h>
#include <gtk-2.0/gdk/gdkkeysyms.h>
#include <glib-2.0/glib.h>
#include <stdio.h>
 
gint delete_event( GtkWidget *window,
                   GdkEvent  *event,
		             gpointer   data ){


   GtkWidget *dialogCloseWindow;
   GtkWidget *lbClose;
   GtkWidget *imgClose;
   GtkWidget *hbClose;

   gint diologChoose;

   dialogCloseWindow = gtk_dialog_new_with_buttons ("退出程序对话框",
                                                    GTK_WINDOW(window),
                                                    GTK_DIALOG_MODAL,
                                                    GTK_STOCK_CANCEL,
                                                    GTK_RESPONSE_REJECT,
                                                    GTK_STOCK_OK,
                                                    GTK_RESPONSE_OK,
                                                    NULL);
   gtk_widget_set_name(GTK_WIDGET(dialogCloseWindow),"modelwindow");
   lbClose = gtk_label_new ("是否要退出程序?");

   imgClose = gtk_image_new_from_stock (GTK_STOCK_DIALOG_INFO,
                                        GTK_ICON_SIZE_DIALOG);

   hbClose = gtk_hbox_new (FALSE, 5);
   gtk_container_set_border_width (GTK_CONTAINER (hbClose), 10);
   gtk_box_pack_start_defaults (GTK_BOX (hbClose), imgClose);
   gtk_box_pack_start_defaults (GTK_BOX (hbClose), lbClose);

   gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dialogCloseWindow)->vbox),
                                hbClose);
   gtk_widget_show_all (dialogCloseWindow);

   diologChoose = gtk_dialog_run (GTK_DIALOG (dialogCloseWindow));

   if (diologChoose == GTK_RESPONSE_OK) {
   	gtk_widget_destroy(dialogCloseWindow);
   	return FALSE;
   }
   else{
   	gtk_widget_destroy(dialogCloseWindow);
   	return TRUE;
   }

}

void destroy(GtkWidget *window, gpointer data)
{
	gtk_main_quit();
}

int main(int argc, char *argv[]) {
	gtk_init(&argc, &argv);
	GtkWidget *window;
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window), "回调函数演示");
	gtk_widget_show(window);
	g_signal_connect(G_OBJECT(window), "delete_event",
			G_CALLBACK(delete_event), NULL);

	g_signal_connect(G_OBJECT(window), "destroy",
				G_CALLBACK(destroy), NULL);
	gtk_main();
	return 0;
}

编译运行

3.jpg

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词: 回调函数

相关推荐

Matlab环境下PC与单片机的串行通信及数据处理

C语言进阶之回调函数详解

2023-08-22

linux kernel工作队列及源码详细讲解

支持多串口同时抄表的智能仪表程序设计

更多 培训课堂
更多 焦点
更多 视频

技术专区