GTK+はイベント駆動型のツールキットだ。
main 関数が起動した後は何もしないで待機しているが、ウィンドウのボタンがクリックされたりしてイベントが発生すると、イベントの種類と発生場所によってコールバック関数が呼び出されて実行される。 例えばウィンドウの閉じるボタンがクリックされると、”destroy" イベントが発生する。シグナル・ハンドラはそのイベントを調べて、適当なコールバック関数を呼び出して実行させる。 イベントにコールバック関数を関連付けるには、g_signal_connect 関数でイベントとコールバック関数を関連付ける。例えば、前回のプログラム例では閉じるボタンをクリックしてもウィンドウは消えたが、プログラムは終了せず、Ctrl-Cで強制終了させなければならなかった。 そこで、”destroy" イベントとプログラムを終了させる、destroy関数を関連付けてウィンドウと同時に、プログラムも終了するようにしたものが次のプログラムだ。 #include <gtk/gtk.h> static void destroy(GtkWidget *widget, gpointer data) { gtk_main_quit (); } int main( int argc, char *argv[] ) { GtkWidget *window; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT (window), "destroy", G_CALLBACK (destroy), NULL); gtk_widget_show (window); gtk_main (); } 同じことを Ruby で記述すると、次のようになる。 require 'gtk2' window = Gtk::Window.new window.signal_connect("destroy") { Gtk.main_quit } window.show_all Gtk.main このように、イベント駆動型のプログラムでは、イベントにコールバック関数を関連付けるという方法でプログラミングが行われる。
by tnomura9
| 2009-12-17 22:11
| NetWalker
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||