在编写代码之前,先初步的认识了解一下什么是GTK+。
GTK+(GIMP Toolkit)是一套源码以LGPL许可协议分发、跨平台的图形工具包。也就是说,它是一个库,它支持创建基于 GUI 的应用程序。可以把GTK+想像成一个工具包,从这个工具包中可以找到用来创建GUI的许多已经准备好的构造块。最初GTK+是作为一个著名的开放源码项目 —— GIMP(GNU Image Manipulation Program)的副产品而创建的,现在已成为一个功能强大、设计灵活的一个通用图形库,是GNU/Linux下开发图形界面的应用程序的主流开发工具之一。GTK+虽然是用C语言写的,但是您可以使用你熟悉的语言来使用GTK+,例如可以用:C++,PHP, Guile,Perl, Python, TOM, Ada95, Objective C等语言来编写自己的GUI应用程序。
如果你在学习完C语言想要摆脱在学习中的黑框框,GTK+是一个很不错的选择。学习起来相对简单,容易上手。在随后的教程中我们使用的是GTK+3.0这个版本来编写我们的界面程序,在Linux系统中GTK+3.0的环境搭建也十分的简单,一条命令即可:
sudo apt-get install libg*。
该命令执行完后,可以测试是否安装成功:
pkg-config --cflags --libs gtk+-3.0
表明GTK+3.0安装成功
安装完成后,我们就可以用几个简短的代码来编写一个带窗口的C语言程序。
/*一个简单的窗口ba*/
#include <gtk;
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();
retrun FALSE;
}
编译代码:gcc -o base ba `pkg-config --cflags --libs gtk+-3.0`
界面出来了
运行成功,终于可以看到了一个自己编写的带界面的小程序了,虽然它什么也不能做,至少不是一个黑框框了。
下面我们来分析一下上面的代码是什么意思:
1.设置include文件与声明主函数
首先是#include<gtk;语句,这是每个GTK+3.0程序都要包含的头文件。然后是函数声明int main(int argc, char * argv[]),这是标准的c语言主函数的声明。
2.声明变量
GtkWidget * window;声明了窗口控件指针。其中GtkWidget是GTK+3.0控件类型,几乎所有的GTK+3.0控件都是这一类声明;window是一个变量名,当然也可以给它起一个其他的名字,诸如ss这样的名字,不过并不建议这样做,这样只会令代码阅读起来更难,所以最好起一个易于理解的变量名,比如window。
3.初始化GTK+3.0的命令行参数
函数gtk_init(&argc, &argv);初始化命令行参数,这在GTK+3.0程序中是必需的,不管你的设计中是否使用到命令行参数,都需要用这一函数来初始化。
4.创建窗口
代码行window = gtk_window_new(GTK_WINDOW_TOPLEVEL);用来创建窗口。函数gtk_window_new()创建一个窗口并返回这个窗口的控件指针,在这里这个指针的赋值给了变量window;参数GTK_WINDOW_TOPLEVEL指明了窗口的类型为最上层的主窗口,它最常用。当然也可以去取另一个值GTK_WINDOW_POPUP指明窗口的类型是弹出式的无边框的窗口。
5.显示窗口
代码行gtk_widget_show(window);用来显示上一步创建的窗口。函数gtk_widget_show是用来显示控件的,它没有返回类型,参数是要显示的控件指针,在这里是窗口window,所以窗口就显示出来了。
6.主事件循环
最后这个函数gkt_main();是最关键的,它是GTK+3.0的主事件循环,每一个GTK+3.0程序都要有一个,否则程序就无法运行。所谓的事件循环指的是GUI程序运行时等待来自外部用户发出的事件,如键盘按键或者鼠标移动等,GTK+3.0将这些事件包装成信号,用户再根据信号的功能编写相应的回调函数来处理这些事件。在这段代码中并没有写回调函数,所以这只是一个死循环,不做任何反应。
代码最后返回逻辑值FALSE,它相当于整型0。
7.编译运行
gcc -o base ba `pkg-config --cflags --libs gtk+-3.0`,在终端上输入这么长一串命令非常繁琐而且容易出错,如果长时间不用的话还有可能忘记这串命令。幸好Linux提供了make工具,这样直接编辑好make的配置文件Makefile,在命令行中直接输入命令make就可以编译了,编译结束后输入命令./base就可以运行这个程序了。
注意:$(CC)前面不是空格,而是Tab,如果写成空格的话运行make命令会出错。
在命令行中的`pkg-config --cflags --libs gtk+-3.0`这段命令的意思是向编译器指出了包含文件的路径,动态链接库路径和要链接那些动态链接库。pkg-config是GTK+3.0和GNOME2系统必备的软件包配置和管理工具,可以在命令行中直接运行。
至此,完成了最简单的变量的声明、窗口的创建、显示。了解GTK+3.0程序的一般结构、GTK+3.0程序中的两个关键步骤:gtk_init和gtk_main。这些都是GTK+3.0程序必备的,为下面进一步学习GTK+3.0编程打下基础。