2013年11月4日月曜日

C/C++ Hello World ウィンドウ表示(GTK+)

Linuxにおいてもウィンドウ表示のHello Worldを作成してみます。

Linuxでウィンドウアプリケーションを作るにはツールキットと言われるソフトを使用します。GTK+や、Qt(キュート)が有名です。GTK+は少々使いにくいかもしれませんが、C++でなくC言語から使えるのが特徴です。

まずは、GTK+の開発環境をインストールします。

Fedoraの場合
$ sudo yum install gtk3-devel

Ubuntuの場合
$ sudo apt-get install libgtk-3-dev

hello2.cは以下のように作成します。
#include <gtk/gtk.h>

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

        gtk_init(&argc, &argv);
        dialog = gtk_message_dialog_new(NULL, 
                                GTK_DIALOG_DESTROY_WITH_PARENT, 
                                GTK_MESSAGE_OTHER,
                                GTK_BUTTONS_OK,
                                "Hello!"
                                );
        gtk_dialog_run(GTK_DIALOG(dialog));
        gtk_widget_destroy(dialog);
        return 0;
}

コンパイルを以下のように行い、実行します。
$ gcc hello2.c `pkg-config --cflags --libs gtk+-3.0`
$ ./a.out

すると以下のようになウィンドウが表示されます。


少し難しいですが、簡単に各項目の説明をします。
項目説明
mainmain()関数はargc, argv, envの3つの引数を持つことができます。今までは全て省略していました。envのみ省略もできます。
int argcコマンドライン引数の数が渡されます。
char *argv[];コマンドライン引数の文字列の配列が渡されます。
GtkWidget *dialog;dialogという名前のウィンドウをこれから作ることを宣言します。
gtk_init()GTK+を使用する前に必須の初期化を行います。
gtk_message_dialog_new()メッセージを表示するだけの簡単なウィンドウdialogを作成します。一つ目の引数は、親ウィンドウを指定します。二つ目の引数は動作を指定します。三つ目の引数はどのようなアイコンを出すかを指定します。4つ目の引数はOKボタンを出す事をしていします。5つ目の引数は、表示する文字列です。
gtk_dialog_run()dialogを表示し、OKが押されるまで待ちます。
gtk_widget_destroy()作成したdialogを削除します。

コンパイル時には`pkg-config --cflags --libs gtk+-3.0`を指定します。「`」は日本語キーボードでは「@」のキーをShiftキーを押しながら入力すると表示される文字です。これを指定するとpkg-configのコマンドの表示結果をそのままコマンドに渡すことができます。pkg-configは、GTK+で必要なヘッダーファイルの場所と、ライブラリを指定する引数を表示するコマンドです。

GTK+の詳細についてはここにリファレンスマニュアルがあります。ただし全部英語です。

0 件のコメント:

コメントを投稿