やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

gladeでGTK+を使ってみた

前回のリベンジ。GTK+でウインドウを表示できた。

入手先

GitHub MEGA

環境

目標

こちらを参考にGladeを試してみる。

目標は、VC++2010ExpressでGTK+を利用してWindowを表示すること。

本当はGTKmm, cairomm, まで使ってみたいが、Gladeには入っていない。 cairoも入っていたが、今回はGTK+だけ試す。

成功

結果からいえば、動作した。

HelloGtkPlus

glade

ダウンロード

glade3-3.6.7-with-GTK+.exe

インストール

手順1 手順2 手順3 手順4 手順5 手順6 手順7

起動

起動

環境変数

インストールした後、以下のような環境変数が追加されていた。

環境変数 パス VC++書式
GTK_HOME C:\Program Files\Gtk+ $(GTK_HOME)

VC++設定

GTK+を使うため、以下のようにプロジェクト設定した。

追加インクルードディレクト

$(GTK_HOME)\include\;
$(GTK_HOME)\include\atk-1.0;
$(GTK_HOME)\include\cairo;
$(GTK_HOME)\include\gail-1.0;
$(GTK_HOME)\include\glib-2.0;
$(GTK_HOME)\include\gtk-2.0;
$(GTK_HOME)\include\pango-1.0;
$(GTK_HOME)\lib\glib-2.0\include\;
$(GTK_HOME)\lib\gtk-2.0\include\;

一行にすると以下。

$(GTK_HOME)\include\;$(GTK_HOME)\include\atk-1.0;$(GTK_HOME)\include\cairo;$(GTK_HOME)\include\gail-1.0;$(GTK_HOME)\include\glib-2.0;$(GTK_HOME)\include\gtk-2.0;$(GTK_HOME)\include\pango-1.0;$(GTK_HOME)\lib\glib-2.0\include\;$(GTK_HOME)\lib\gtk-2.0\include\;

追加ライブラリディレクト

$(GTK_HOME)\lib;

追加ライブラリファイル

glib-2.0.lib;
gtk-win32-2.0.lib;
gdk-win32-2.0.lib;
gobject-2.0.lib;
gdk_pixbuf-2.0.lib;
gthread-2.0.lib;
gmodule-2.0.lib;
pango-1.0.lib;
atk-1.0.lib;
zdll.lib;

一行にすると以下。

glib-2.0.lib;gtk-win32-2.0.lib;gdk-win32-2.0.lib;gobject-2.0.lib;gdk_pixbuf-2.0.lib;gthread-2.0.lib;gmodule-2.0.lib;pango-1.0.lib;atk-1.0.lib;zdll.lib;

ソースコード

#include <gtk-2.0/gtk/gtk.h>
int main(int argc, char* argv[])
{
    gtk_init(&argc, &argv);

    GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_widget_set_usize(window, 300, 200);

    g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
    gtk_window_set_title(GTK_WINDOW(window), "GTK+ with VS2010");

    gtk_widget_show(window);

    gtk_main();
    return 0;
}

なんと、たったこれだけ。 Windowsのメッセージループとは全然ちがう。

所感

GTK+の使い方がWindowsMessageLoopとまるで違う。 イチから調べねばさっぱりわからない。 cairoは使えるのかどうかさえわからない。

でも、久しぶりに目で見える成果ができた。