人気ブログランキング | 話題のタグを見る

GTK+ 2.0 でウィンドウを表示する。

GTK+2.0 でウィンドウを表示するプログラムは次のようになる。

#include <gtk/gtk.h>

int main( int argc, char *argv[] )
{
    GtkWidget *window;

    gtk_init (&argc, &argv);
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_widget_show (window);
    gtk_main ();
}

どういうことをやっているかというと、

  1. ライブラリのヘッダー gtk/gtk.h を読み込み
  2. ウィンドウのタグ window をつくり
  3. ツールキットを初期化し
  4. ウィンドウのウィジェットを作成してそれに window タグを貼り付け
  5. タグ window を引数にしてこのウィンドウを表示させ
  6. メインルーチンを読んで、マウスが操作されるのを待つ

という簡単なプログラムだ。このプログラム base.c を次のようにしてコンパイルする。

$ gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0`

すると、base という実行プログラムができるので次のように入力して実行する。

$ ./base

表示されたウィンドウは、タイトルバーをドラッグして移動させることができる。ウィンドウのサイズ変更も普通の操作でできるし、最小化ボタンや全画面表示ボタンも機能する。自分で一からプログラムすると大変だが、全部 GTK が面倒を見てくれる。

閉じるボタンをクリックするとウィンドウは閉じるが、プログラムはまだ終了しないので、Ctrl + C で強制終了させる。

このように、GTK+でGUIをプログラムすると言っても、GTKの部品をつなぎ合わせるだけだから、プログラム言語特有のものはあまり出てこない。したがって、他のプログラム言語でプログラムしても同じようなプログラムになる。

次のプログラム base.rb は、上のプログラムと同じことを ruby で記述したものだ。Netwalkerでは Ruby は標準ではインストールされていないので、Synapticから Ruby と libgtk-ruby-1.8 をインストールする必要がある。

require 'gtk2'

window = Gtk::Window.new
window.show_all
Gtk.main

えらくみじかくなってしまったが、ツールキットの初期化が自動化され、変数の宣言がないだけで、やっていることは一緒だ。

  1. ライブラリを読み込み
  2. window というウィジェットオブジェクトを作り
  3. ウィンドウを表示し
  4. メインルーチンを呼び出して待機する

このプログラムを起動するには、端末から次のように入力する。

$ ruby base.rb

当たり前のことだが、最初のプログラムと全くおなじウィンドウが表示され、操作も同じようなことができる。

GTK+のプログラミングは、このように、GTK+の部品をつなぎ合わせるだけなので、学習の焦点は各部品の性質を理解することに集中される。
by tnomura9 | 2009-12-17 08:28 | NetWalker | Comments(0)
<< コールバック関数 GTK+2.0 やってみた。 >>