次のコードがあります。
int DT=45;
g_print("--Set: %d\n",DT);
g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(cave_dive_toggle_cb), (gpointer) &DT);
およびコールバック関数:
void cave_dive_toggle_cb(GtkWidget *widget, gpointer data)
{
int *ID=(int *)data;
int DT= *ID;
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
g_print("clicked %d\n",DT);
else
g_print("unclicked %d\n",DT);
}
ダイアログを開いてボタンをクリックすると、常に次のように表示されます。
--Set: 45
clicked 0
unclicked 0
clicked 0
unclicked 0
clicked 0
unclicked 0
私は何か間違ったことをしていますか?私が Gtk のドキュメントを理解している限り、そうではありません。スワップ バージョンも試し、正しい CB を記述したことを確認するために最初のパラメーターを使用しました。