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

0 c gtk function callback

我试图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;
}
Run Code Online (Sandbox Code Playgroud)

先感谢您!!!

Mat*_*ner 5

"delete-event"信号回调需要3个论点.

函数签名f_window应该是GtkWidget* widget, GdkEvent *event, gpointer data.

您实际上正在打印event代码中的值.