你首先做的第一件事,当然是下载 GTK 源程序,并安装它。你总是能从 ftp.gtk.org 得到最新版本。你也可以在 http://www.gtk.org/ 上查看其它 GTK 源程序的信息。

    SofTool.CN Notes:

    GTK 使用 GNU autoconf 配置。

    解压缩后,输入 --help 查看选项列表:

    ./configure --help

    GTK 源码发布包中包含教程中所有示例的代码,每个示例中包含有 Makefiles 文件,用以方便编译。

    一开始介绍 GTK,我们会尽可能从简单的程序开始。

    下面我们创建一个程序,该程序大小是一个 200x200 的窗口:

    开始 - 图1

    本小节演示的窗口暂时没有办法退出,除非你从shell 中将它杀掉 ^_^ :

    /*文件名: main.c */
    
    #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 ();
    
        return 0;
    }

    你可以用 gcc 编译上面的程序:

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

    不常用的编译参数在下一节 编译 Hello World 程序 中解释。

    所有程序应该包含 gtk/gtk.h,其中声明了变量、函数以及数据结构等,这些东西会在你的程序中使用。

    下一行:

    gtk_init (&argc, &argv);

    这个函数 gtk_init(gint *argc, gchar ***argv) 会在每个 GTK 应用程序中调用。该函数设定了默认的视频(visual)和颜色映射模式(color map),接着会调用函数 gdk_init(gint *argc, gchar ***argv)。该函数初始化要使用的库,设定默认的信号处理,并检查传递给你的程序的命令行参数,寻找下列之一:
    • –gtk-module
    • –g-fatal-warnings
    • –gtk-debug
    • –gtk-no-debug
    • –gdk-debug
    • –gdk-no-debug
    • –display
    • –sync
    • –name
    • –class

    这些参数将会从参数表中删除,留下它不能识别给你的程序解析或忽略。这就创建了可以被所有 GTK 程序接受的一组
    标准参数。

    Softool.CN Notes:
    上面一句话什么意思?

    下面两行程序会创建并显示一个窗口:

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_widget_show (window);

    GTK_WINDOW_TOPLEVEL 参数指我们要使用窗口管理器来修饰和放置窗口。这里不会创建一个 0x0 大小的窗口,一
    个没有子构件的窗口默认大小设置为 200x200,这样你仍然能操作它。

    gtk_widget_show() 函数让 GTK 知道,我们已经设置完构件的属性,可以显示它了。

    最后一行 gtk_main () ,表示进入 GTK 主处理循环。
    gtk_main() 是另一个可以在每个 GTK 程序中见到的函数调用。当程序运行到这里,GTK 会“睡着”等待 X 事件 (如按
    钮或键盘按下)、超时(timeouts)或文件 IO 通知发生。在我们的示例中,事件被忽略。