(一)、一步一步学GTK+之开篇
本人作为一个老程序员(仅指年龄老)想要学习一些跨平台的开源项目,比如GTK+、GStreamer等,特写博客方便自己加深记忆,可能很多内容是直接从一些教程中摘取,如涉及到版权问题,请联系我:28341847@qq.com.
本系列根据《GTK+程序设计中文版》(pdf版)中内容,摘取一些个人认为比较重要的内容或代码,并加上一些个人的注释和心得,以达到学习的目的,其中会涉及到在linux和windows下区别,力争做到所有代码跨平台编译。
示例代码环境:
windows: win7+minGW+code::block
linux: centos6.3+code::block (VirtualBox虚拟机中)
一、什么是GTK+
GTK+ 是一种函数库是用来帮助制作图形交互界面的。整个函数库都是由C 语言来编写的。 GTK+函数库通常也叫做 GIMP 工具包。因为,一开始GTK+是用来编写“GIMP”–这个图形处理软件的。从那以后, GTK+就逐渐成为了Linux and BSDUnix 下最受欢迎的用于图形交互界面(GUI)设计的工具包之一。时至今日,大多数的Linux 下的GUI 软件(有图形交互界面)都是由GTK+或者QT 来编写的。GTK+是一种面向对象式的API(applicationprogramming interface)。Glib 是GTK+的基础,而这种“面向对象系统”正是由“Glib”来提供的。GObject 也就是这种面向对象的机制可以为 GTK+绑定很多种开发语言。目前存在的语言有:C++, Python, Perl, Java, C#,PHP,等其他高级语言。
GTK+ 和以下“函数库”存在着依赖关系
• Glib
• Pango
• ATK
• GDK
• GdkPixbuf
• Cairo
Glib 是一种通用的函数库。她提供了各种各样的语言特性,譬如说:各种数据类型,字符串函数,错误通知,消息队列和线程。Pango 是一种函数库,用来实现国际化和本地化的功能。ATK是一种平易近人的工具函数包,她提供了快捷键服务为肢体有缺陷的人使用电脑提供了便利。GDK 是一种函数库,她为整个GTK+图形库系统提供了一些底层的“图形实现”和“窗口实现”的方法。在Linux 中GDK 是位于X 服务器和GTK+函数库之间的。在最近的GTK+发行版本中,越来越多的功能性函数,都交给了Cairo 函数库来处理。GdkPixbuf 函数库是一种函数库工具包用于加载图像和维护图像“缓存”的(pixel buffer)。Cairo 是一种函数库用于制作二维图像。从GTK+2.8 版本以后,Cairo 就正式成为GTK+系统中的一员了。Gnome and XFce 桌面环境系统都是用GTK+来编程实现的. SWT and wxWidgets 是种很著名的编程框架,也是用GTK+来编程实现的。最杰出的GTK+软件的代表是Firefox (火狐浏览器)和 Inkscape。
二、安装GTK+开发环境
1. 安装code::blocks
linux: http://www.codeblocks.org/downloads/26#linux64 我下载的是centos版的
windows: http://www.codeblocks.org/downloads/26#linux64 可直接选择带minGW的版本
2.安装GTK+(YUM安装)
linux:
yum install gtk2 gtk2-devel gtk2-devel-docs
windows:
http://www.gtk.org/download/win32.php 下载all-in-one bundle 安装即可
3.配置code::blocks中的GTK+编译器
现在安装了gtk后,可以用pkg-config --list-all 查看,其中应该包含一个gtk+-2.0.
在code::blocks中 默认的编译器是GNU GCC Compiler,我们为 GTK单独设置一个编译器:
Settings -> Compiler settings ,选择GNU GCC Compiler 然后点击 copy ,输入一个gtk编译器的名称:GUN GCC Compiler GTK2.0,并设置为默认编译器,点击 set as default .然后在 Compiler settings -> Other options -> 添加`pkg-config --cflags gtk+-2.0`(目的是添加include),在linker settings -> Other linker options 中也添加 pkg-config --libs gtk+-2.0`(目的是添加lib),如果在windows下运行时候可能会报错,如果缺少zlib1.dll ,放在 工程/bin/Debug下即可。
4.测试一下环境是否正确
在codeblocks中新建一个工程,选择上面新添加的编译器(GUN GCC Compiler GTK2.0),然后在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; }
编译并执行出现一个空白窗体(linux下在命令行下执行),即代表gtk+的开发环境配置成功了。顺便说下可以直接用gcc命令行生成:
gcc -o hello-world main.c `pkg-config --cflags --libs gtk+-2.0`
下面是在windows 7 和 linux(centos) 下的效果