GTK+,或者是叫做GIMP工具组件,是一套创建图形用户接口的多平台组件.GTK+提供了一套完整的组件集,同时他不仅仅适用于小型工具开发,同样也适用于一个完整的项目套件.
像我们熟悉的gnome桌面,各个系统平台上的GIMP图像处理软件,VMWare工作站,以及OS X和Windows vista上的gedit文本编辑器等都是使用GTK创建的.
GTK+是使用C语言写的,但是已经被设计成支持多语言的框架了,例如在Perl和python等中使用GTK+可以快速的创建桌面应用程序.同时,他是使用GObject来实现的,GObject是一个为C所开发的一个面向对象的框架,所以GTK+也是支持面向对象编程的.GTK+是事件驱动的.这套组建对于事件的监听例如对一个按钮的点击,会将事件传递到你的应用程序中去响应.
下面我们搭建一下我们的开发环境:
首先我们需要了解的是,GTK+自身是依赖于下面的库的:
?1:Glib
?2:pangp
?3:ATK
?4:GDK
?5:GdkPixbuf
?6:Cairo
下面我们一一了解一下这些函数库:
Glib是一个常用的工具函数库.他提供了一些数据类型,字符串工具,错误通知,消息队列和线程.pango是一种函数库,用来实现国际化和本地化的功能.ATK是一种工具函数包,她提供了创建快捷键的功能.GDK是一种函数库,他为整个GTK+函数图形系统提供了一些底层的”图形实现”和”窗口实现”的方法.GDKPixbuf函数库用于加载图像和维护图像”缓存”. Cairo是用于制作二维图像的函数库.
首先我们需要在我们的ubuntu系统中安装GTK+函数库:
sudo apt-get install gtk2 gtk2-devel gtk2-devel-docs
其次,我们需要知道,当我们写完我们的程序之后,应该如何编译我们的程序,那肯定好说,直接使用gcc来编译就行了.是的,是使用gcc来进行编译,但是编译的过程中所需要的函数库的位置我们应该如何指定呢?下面就会使用到我们的一款工具”pkg-config”,该工具可以提供各种安装函数库的位置.假如我们要编译我们的hello.c程序,我们就需要这样写:
gcc -o hello hello.c `pkg-config --libs --cflags gtk+2.0`
注意,最后使用的是反引用号将pkg-config引起的,反引用号就是你的键盘上的在数字”1”左面的那个按键.下面我们来写一个hello World程序:
hello.c
#include <gtk/gtk.h>
/*
* 最简单的GTK桌面程序
* 仅仅就是生成一个窗口的小小程序
*/
int main(int argc,char *argv[]){
GtkWidget *window; //
gtk_init(&argc,&argv); // 初始化整个GTK+程序,是每一个GTK+程序必不可少的部分
/*
* 生成一个构件 -- GtkWindow,这个窗体的种类
* 是GTK_WINDOW_TOPLEVEL,toplevel窗口拥有一个
* 标题栏和边框
*/
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window); //必不可少的,显示构件
gtk_main(); //进入主循环,等待事件的发生
return 0;
}
下面我们使用下面的代码来进行编译:
gcc -o hello helloc. `pkg-config --libs --cflags gtk+2.0`
下面就是运行之后的结果: