无法在gtk2

时间:2017-05-19 08:52:42

标签: c linux gtk gtk2

以下是代码,我想将my_pointer传递给gtk窗口destroy的{​​{1}}信号:

GtkWidget *window

但我得到的是static gboolean destroy(GtkWidget *widget, GdkEvent *event, gpointer data) { printf("gpointer: %ld\n", data); } g_signal_connect (window, "destroy", G_CALLBACK(destroy), my_pointer); ,总是1

当我将1传递给my_pointer时,任何其他信号都能正常工作,例如focus-in-eventkey-press-event等,但destroy信号有什么问题?并且1根本不是指针。

1 个答案:

答案 0 :(得分:2)

destroy signaldestroy-event信号不同。

destroy信号回调的预期函数原型如下:

void
user_function (GtkWidget *object,
               gpointer   user_data)

尽管您的函数当前与destroy-event信号的回调匹配:

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

更改返回类型并删除函数的第二个参数。

static void destroy(GtkWidget *widget, gpointer data) {
    printf("gpointer: %ld\n", data);
}