簡體   English   中英

通過 GTK C 中的回調 function 傳遞變量

[英]Passing variables through callback function in GTK C

我正在嘗試從我的回調函數在控制台上打印變量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;
}

先感謝您!!!

"delete-event"信號回調需要三個arguments。

f_window 的f_window簽名應該是GtkWidget* widget, GdkEvent *event, gpointer data

您實際上是在代碼中打印event的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM