GTKを使ったプログラミングのリメイク版です。以前のGTKは内容が古いので、新しくしました。
簡単のためにgladeを使ったプログラミングとなっています。
Gladeを起動すると、こんな画面になります。

まず、プロジェクトのオプションを設定します。

プロジェクト・ファイルの形式をGtkBuilderにします。
使用するツールキットの最低バージョンを上げると、使えるオブジェクトが増えます。
設定が終了すると、オブジェクトを配置して画面を作ります。左のツールアイコンを選んでオブジェクトを配置します。はじめは赤で囲んだウインドウを配置します。

下は、ウインドウにボタンだけを配置した図です。

配置し終わったら、プロパティ設定をします。

window1を選択し、ウインドウのプロパティを設定します。プロパティ項目は色々あるので、ここではシグナル設定のみをします。ウインドウが閉じたときに、gtkプログラムを終了するコマンド、gtk_main_quit()が実行されるように設定します。

ボタンが押されたときのシグナル設定もしておきます。ボタンクリックで、on_button1_clicked()が実行されるようにします。この関数は標準関数ではないので、後で自分で作る必要があります。
ここまでできたら、test_proglam.gladeと名前をつけて、保存します。
#include <gtk/gtk.h>
/*
* コールバック関数。
* GtkBuilderから呼び出す場合、G_MODULE_EXPORTが必要。
*/
G_MODULE_EXPORT void on_button1_clicked(GtkButton *button, gpointer user_data){
/* 終了する。 */
gtk_main_quit();
}
int main(int argc, char* argv[]){
GtkBuilder* builder; /* GtkBuilderオブジェクト。gladeファイルの設定 = GtkBuilderオブジェクトと考えてOK */
GtkWidget* window; /* GtkWidgetオブジェクト */
/* GTKを開始する */
gtk_init(&argc, &argv);
/* GtkBuilderオブジェクトの取得 */
builder = gtk_builder_new();
/* gladeファイルの読み込み */
gtk_builder_add_from_file(builder, "test_program.glade", NULL);
/*
* GtkBuilderオブジェクトからGtkWidgetを取得する。
* GtkWidgetはGTKの様々なオブジェクトとして使われる。
* 今回、ウインドウやウインドウの上にあるオブジェクトを表示するため、
* ウインドウのGtkWidgetを取得する必要がある。
* なお、gtk_builder_get_object()で取得できるのはGObjectであるため、
* GtkWidgetにキャストしている。
*/
window = (GtkWidget*)gtk_builder_get_object(builder, "window1");
/* ウインドウとその上にあるオブジェクトを表示する。 */
gtk_widget_show_all(window);
/*
* シグナル設定した関数を有効にする。
* gladeで設定したシグナルは、
* 1. ウインドウを閉じたときにgtk_main_quit()を実行する。
* 2. ボタンをクリックした時にon_button1_clicked()を実行する。
* である。
* gtk_main_quit()はもともとある関数だが、
* on_button1_clicked()は自分で新たに作成しなければならない。
*/
gtk_builder_connect_signals(builder, NULL);
/* GTKのイベントループ */
gtk_main();
return 0;
}
program.c という名前にして、コンパイルします。
gcc -o program program.c `pkg-config --cflags --libs gtk+-2.0 gmodule-2.0`
pkg-configは指定されたパッケージのincludeファイルのディレクトリ指定やリンクを行ってくれます。
「program」とtest_program.gladeは同じディレクトリに置き、実行します。
実行すると、ボタン1つだけのウインドウが表示されます。ボタンを押したり、ウインドウを閉じたりすると、プログラムが終了します。