相对于Swing之于Java,C/C++环境下的GUI构建就显得复杂得多。首先就是C/C++语言并没有一个官方的GUI库。于是,第三方类库就如雨后春笋般成长起来。由于C/C++没有Java类似的跨平台性,所以其类库大多也是限定平台的,比如微软的MFC。当然也会有很多能够跨平台的GUI库,比如Qt,比如wxWidget,比如我们这里所要讲解的GTK+。
相对于MFC、Qt和wxWidget,GTK+使用面向对象框架的纯C语言编写。这是一个小巧但是功能丝毫没有逊色的GUI类库。Linux下的GNOME环境就是使用GTK+编写的,还有类似于Photoshop的GIMP,更与GTK+有着密不可分的联系。下面先来简单介绍一下GTK+。
说起GTK+,首先要先说GIMP。在很多推荐使用自由软件代替商业软件的文章中,大多会提到,使用开源的GIMP代替Photoshop。GIMP是GNU Image Manipulation Program的缩写,最初是类Unix操作系统上的图像处理程序,现在也被移植到了Windows平台。为了简化GIMP的开发,GIMP ToolKit诞生了,这就是GTK。在增加了面向对象的特性之后,它的名字后面添加了一个加号,于是就成为GTK+。
- GTK+是一个创建图形化用户界面的库,能够运行于类Unix平台、Windows平台和其他设备上。GTK+依赖于下面所列出的几个库:
- GLib - 一个通用的工具库,并不仅仅用于创建图形用户界面。GLib定义了很多数据类型、宏、文件工具等;
- Pango - 国际化文字绑定;
- ATK - 提供图形用户界面交互访问技术的通用接口;
- GdkPixbuf - 允许从图像数据或者图像文件创建像素缓冲;
- GDK - 为不同的窗口系统提供的抽象层,提供本地图形接口和GTK+间的一个抽象,是平台相关的。如果需要向其他平台上移植GTK+,只需要重新编写GDK;
- GTK - GTK+库,提供了各种控件。
我们对GTK+的学习仅仅为了使用GTK+,不会过多的纠缠这些库的使用。