你首先做的第一件事,当然是下载 GTK 源程序,并安装它。你总是能从 ftp.gtk.org 得到最新版本。你也可以在 http://www.gtk.org/ 上查看其它 GTK 源程序的信息。
SofTool.CN Notes:
- gtk+ 2 最后一个版本下载地址:
https://download.gnome.org/sources/gtk+/2.24/
从列表中,我们可以知道,归档的最后一个源码包是 2020-12-21 01:28 对应的 :gtk+-2.24.33.tar.xz- gtk+ 2 英文手册 HTML版本格式:
https://developer.gnome.org/gtk2/gtk2-html-2.24.33.tar.gz
可以通过 Devhelp 工具查看API文档;
GTK 使用 GNU autoconf 配置。
解压缩后,输入 --help 查看选项列表:
./configure --help
GTK 源码发布包中包含教程中所有示例的代码,每个示例中包含有 Makefiles 文件,用以方便编译。
一开始介绍 GTK,我们会尽可能从简单的程序开始。
下面我们创建一个程序,该程序大小是一个 200x200 的窗口:
本小节演示的窗口暂时没有办法退出,除非你从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 通知发生。在我们的示例中,事件被忽略。