通过GTK C中的回调函数传递变量

时间:2011-07-04 02:02:09

标签: c function callback gtk

我正在尝试从回调中在控制台上打印变量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;
}

提前谢谢!!!

1 个答案:

答案 0 :(得分:5)

"delete-event"信号回调需要three个参数。

f_window的功能签名应为GtkWidget* widget, GdkEvent *event, gpointer data

您实际上是在代码中打印event的值。