0
  1. gtk スクロール ウィンドウを作成しました。
  2. それにgtkツリービューを添付しました
  3. 垂直スクロール用のgtk調整を作成しました
  4. gtk 垂直スクロールバーを作成し、上記で作成した調整を行いました。
  5. ツリービューにデータを入力しました。
  6. スクロールバーが上または下に移動したときに信号をキャッチしようとしました:

gtk_signal_connect(GTK_OBJECT(vscrollbar), "value_changed",G_CALLBACK(my_function),NULL);

私のシグナルハンドラは以下のようになります:

void  my_function(GtkWidget *widget)
{
printf("Hi\n");
}

上記のようにHi、スクロールバーが 1 ステップ上または 1 ステップ下に移動するたびに が出力されます。upしかし、上に移動したとき、または下に移動したときに印刷したいdown

void  my_function(GtkWidget *widget)
{
if(/*  movement is up, How to identify? */)
printf("UP\n");
if(/* movement is down, How to identify */)
printf("DOWN\n");
}

gtk プログラミングに関しては、私はまったくの初心者です。誰かがこれのために何をする必要があるか提案してもらえますか?

4

1 に答える 1

1

まず、提案: 古いライブラリを使用する必要がある場合でも、最新の API リファレンスを確認してください。これは、すでに時代遅れになっているコードを書かないようにするのに役立ちます (gtk_signal_connect と GTK_OBJECT は、現在の GTK+ を使っている人にとってはかなり古いものに見えます)。実際に現在の GTK+ を使用できる場合は、使用してください。

あなたの問題に関しては、API が変化の方向や大きさを教えてくれないことは正しいです。シグナルハンドラーで「静的 gdouble last_value」を使用し、それを現在の値と比較して方向を調べることができます (その後、last_value を設定することを忘れないでください:))。

于 2013-06-13T18:15:12.920 に答える