次のページ 前のページ 目次へ

GTK+ HOWTO

Yoshio Shimamura <yoshios@green.ocn.ne.jp>

v1.0, 23 September 2000
この文書は、GTK+を用いたX Windowプログラム作成に関する HOWTO です。 この文書の最新版は http://hp.vector.co.jp/authors/VA004572/index.html から入手可能です。

Index

0 概要

1 Hello GTK+!

2 GTK+でのmake

3 Glib

4 Event

5 パッキング

6 Imlib


0 概要

GTK(GIMP Toolkit)は、もともとGIMP(General Image Manipulation Program)の開発のために開発されたXLibのツールキットです。 GTK+は、GNOMEでも採用されているので安心して使用できます。

西村ゆきえさんのピアノは、最高です。

1 Hello GTK+!

#include <gtk/gtk.h>

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

  gtk_init(&argc, &argv);

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_signal_connect_(GTK_OBJECT(window), "destory",
                      GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
  gtk_widget_show(widndow);
  gtk_main();
  return 0;
}

2 GTK+でのmake

$ gcc -Wall -g hello.c -o hello `gtk-config --cflags` `gtk-config --libs`
gtk-configは、GTKを使うプログラムのコンパイルオプション等の情報を返すツールである。

3 Glib

GTK+では、標準Cライブラリ以外にGlibが使える。Glib固有の型は次のようなものがある。
char  == gchar
int   == gint
short == gshort
long  == glong
void  == gpointer
Glibの便利な関数
char *g_strdup(const gchar *str);
gpointer g_malloc(gulong size);

4 Event

Xのイベントメカニズムのための主要イベントと型
event
button_press_event
button_release_event
delete_event
destroy_event
focus_in_event
focus_out_event
selection_clear_event
selection_request_event
selection_notify_event
drag_begin_event
drag_request_event
drag_end_event
drop_enter_event
drop_leave_event
drop_data_available_event
イベント発生時の処理を記述するコールバック関数は、次の形式です。
void callback_function(GtkWidget *widget,
                       GdkEvent *event,
                       gpointer data);
イベントへの接続は、gtk_signal_connectを使って次のようにします。
gtk_signal_connect(GTK_OBJECT(btn_file_open),
                   "button_press_event",
                   GTK_SIGNAL_FUNC(on_btn_file_open),
                   NULL);

5 パッキング

GtkContainerとその派生Widgetは、他のウィジェットを乗せることができる。
GtkWidget *vbox;

vbox = gtk_vbox_new(FALSE, 0);

6 Imlib

7 メニュー

メニューは、メニューバー、メニュー、メニューアイテムから構成されます。 基本的には、次のような方法で作成します。


GtkItemFactoryウィジェットを使用すると、もっと簡単にメニューを作成することができます。


次のページ 前のページ 目次へ