以下是代码,我想将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-event
,key-press-event
等,但destroy
信号有什么问题?并且1
根本不是指针。
答案 0 :(得分:2)
destroy
signal与destroy-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);
}