2017-05-19 10 views
1

の信号を破壊してデータを渡すことはできません、私は、GTKウィンドウGtkWidget *windowdestroy信号にmy_pointerを渡したい:がここにコードがあるGTK2

static gboolean destroy(GtkWidget *widget, GdkEvent *event, gpointer data) { 
    printf("gpointer: %ld\n", data); 
} 

g_signal_connect (window, "destroy", G_CALLBACK(destroy), my_pointer); 

しかし、私が得たことは、常に11です!

my_pointerfocus-in-event,key-press-eventなどの信号を渡すと、他の信号は正常に動作しますが、destroyの信号に問題がありますか?そして1は全くポインタではありません。

答えて

2

destroy signalは、destroy-event信号とは異なります。

destroy信号のコールバックの予想される関数のプロトタイプは以下の通りです:

void 
user_function (GtkWidget *object, 
       gpointer user_data) 

あなたの関数は、現在destroy-event信号のコールバックが一致するのに対し:

gboolean 
user_function (GtkWidget *widget, 
       GdkEvent *event, 
       gpointer user_data) 

変更戻り値の型と第二パラメータを削除あなたの機能の

static void destroy(GtkWidget *widget, gpointer data) { 
    printf("gpointer: %ld\n", data); 
} 
+0

私はいくつかのデバッグ後、 'GdkEvent'を使わずに' destroy'シグナルのコールバックに2つの引数しかありませんでした。 – Learning

関連する問題