"); //-->
代码:
#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;
}编译运行

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
Matlab环境下PC与单片机的串行通信及数据处理
高通gpsone_api函数详解
C语言进阶之回调函数详解
linux kernel工作队列及源码详细讲解
支持多串口同时抄表的智能仪表程序设计
使用回调函数降低程序耦合性