我正在尝试从回调中在控制台上打印变量i
的值
功能,但不是打印23,它继续打印一些地址11652528等...
我一直在网上搜索很多,根据一个旧的GTK教程(实际的G_CALLBACK
宏是GTK_SIGNAL_FUNC
),这应该可行。
有没有人知道错误在哪里?
#include <stdlib.h>
#include <gtk/gtk.h>
#include <string.h>
void f_window(GtkWidget* widget, gpointer data)
{
g_print("%d\n",GPOINTER_TO_INT(data));
}
int main(int argc, char **argv)
{
gint i=23;
GtkWidget * MainWindow = NULL;
gtk_init(&argc, &argv);
MainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(MainWindow),"delete-event",G_CALLBACK(f_window),GINT_TO_POINTER(i));
gtk_widget_show_all(MainWindow);
gtk_main();
gtk_exit(EXIT_SUCCESS);
return EXIT_SUCCESS;
}
提前谢谢!!!
答案 0 :(得分:5)
"delete-event"
信号回调需要three个参数。
f_window
的功能签名应为GtkWidget* widget, GdkEvent *event, gpointer data
。
您实际上是在代码中打印event
的值。