Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在GTK C中通过回调函数传递变量_C_Function_Callback_Gtk - Fatal编程技术网

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

在GTK C中通过回调函数传递变量,c,function,callback,gtk,C,Function,Callback,Gtk,我正试图从回调函数在控制台上打印变量I的值 functon,但它不打印23,而是继续打印一些地址1165228等 我在网上搜索了很多,根据一个旧的GTK教程(实际的G_回调宏是GTK_信号函数),这应该可以工作 有人知道错误在哪里吗 #include <stdlib.h> #include <gtk/gtk.h> #include <string.h> void f_window(GtkWidget* widget, gpointer data) {

我正试图从回调函数在控制台上打印变量
I
的值 functon,但它不打印23,而是继续打印一些地址1165228等

我在网上搜索了很多,根据一个旧的GTK教程(实际的
G_回调
宏是
GTK_信号函数
),这应该可以工作

有人知道错误在哪里吗

#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;
}
#包括
#包括
#包括
无效f_窗口(GtkWidget*小部件,gpointer数据)
{
g_print(“%d\n”,GPOINTER_TO_INT(数据));
}
int main(int argc,字符**argv)
{
gint i=23;
GtkWidget*MainWindow=NULL;
gtk_init(&argc,&argv);
MainWindow=gtk_window_new(gtk_window_TOPLEVEL);
g_信号连接(g_对象(主窗口)、“删除事件”、g_回调(f_窗口)、GINT_到_指针(i));
gtk_小部件_显示_全部(主窗口);
gtk_main();
gtk_退出(退出成功);
返回退出成功;
}
提前谢谢你

信号回调采用参数

f_窗口
的函数签名应该是
GtkWidget*小部件、GdkEvent*事件、gpointer数据

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

“delete event”
信号回调包含参数

f_窗口
的函数签名应该是
GtkWidget*小部件、GdkEvent*事件、gpointer数据


你实际上是在代码中打印<代码>事件<代码>。

如果我的答案有帮助,考虑点击投票得分旁边的大蜱来接受它。祝你好运,并勇于使用C和GTK。如果我的答案有帮助,考虑点击大蜱旁边的投票分数接受它。祝你好运,使用C和GTK真棒。