◆C语言函数库简介系列◆1.1 GTK+ zz

http://post.baidu.com/f?kz=102395749              

 assiss

 

◆C语言函数库简介系列◆1.1 GTK+
 
1 C与GUI
用C写GUI似乎是一件非常痛苦的事情。比如WIN32 SDK,比如XLIB……我初学编程时,为了找一个合适的GUI库--既强大又比较简单,花费了不知多少时间。

初见GTK+,就在我苦苦查找GUI库的时候。但那个时候的GTK+让我难以理解,或者说,那个时候的我还不能理解GTK+,轻而易举地放弃了这个优秀的GUI库。

众里寻她千百度。找不到。我于是认为,和其他人一样认为,用C写GUI是费力不讨好的事情。于是我转向C++,转向JAVA,转向PYTHON。MFC,FLTK,FOX,WXWINDOWS->WXWIDGETS,QT,SWT,SWING,TCL/TK……天知道我试了多少种GUI库。

蓦然回首,那人却在,灯火阑珊处。在寻找的过程中,我慢慢领会到了C语言的真正力量所在。在学习了大量开源库代码之后,我慢慢了解到一个不被常人所了解的世界。就在我眼界渐开的时候,我又遇到了GTK+,这一回,我终于看到了她的美丽,看到了她的魅力。

1.1 GUI王国的一朵奇葩,一枝独秀的GTK+
GTK+也许不是最优秀的GUI库,但必然是最好的库之一;作为钟情C语言的人来说,除了GTK+,你再也找不到更好的了。这是宿命,还是无可奈何?
不必感到悲哀,不必再去东挑西选,GTK+绝对对得起“最好”这两个字。来,一起领略GTK+的风采吧。

以下内容,除了废话,有用的部分主要翻译自GTK+ FAQ。
什么是GTK+?
要说GTK+,首先得说GUI,即graphical user interface,图形用户界面。GUI的好处不用我多说了,学C/C++的刚开始总是羡慕学VB和DELPHI的,因为他们总是能轻而易举地建立一个GUI程序。其实不用羡慕,等你学到了C/C++的精髓之后,想做一个有用的GUI程序,不比他们慢;相反,由于有了坚实的基础,你还能做得比他们好。
GTK+就是这样一种帮你创建GUI的工具。
它跨平台。
它支撑起一个庞大的桌面系统-GNOME。
它自由,免费,LGPL的授权比GPL更宽松,更适合各种用途。
它被多种语言支持。C++,PYTHON,JAVA(没错),还有很多很多。
它有著名的GLADE,设计GUI不比那些所见即所得的工具烦。
它有大量的WIDGET,很多很多,通常情况下你不需要再写新的。
它的WIDGET可以继承--是的,你没看错,用C实现的继承。就算你需要写新的WIDGET,也是小事一桩,不比C++困难。
它的设计思想是面向对象的。C语言的特性决定了它不可能是真正的面向对象,但你仔细看看GTK+,除了需要你进行一些保护,它和真正的面向对象又有什么大的区别?
它实现了大量有用的函数,在GLIB里。这里有数据结构--你不需要再去写链表,无论是单身的还是双向的;你不需要再羡慕C++的HASH,GLIB也有;这里有线程,这里有IO,……

废话少说,让我们见识一下著名的HELLO WORLD FOR GTK+!

1.1.1 安装GTK+
LINUX/UNIX的用户就不需要我多说了,只是要注意安装开发版的,并且安装LIBGLADE。我们的HELLO WORLD就是从LIBGLADE开始的。
WINDOWS的用户安装GTK+有些麻烦,首先,98和ME的用户可能只能安装2.4版的,2000以上的可以安装最新版。建议有条件的安装LINUX/UNIX,没条件的也安装2000/XP,不要再用98和ME了。下面我主要介绍一下WINDOWS+MINGW+GTK+的安装方法。
1.1.2 下载GLADE/GTK+ FOR WINDOWS 开发版
有热心的网友制作了GTK+ FOR WINDOWS,当然有很多版本,我推荐安装下面网址的:
http://gladewin32.sourceforge.net/modules/news/
目前上述网址的最新版是2.8.14
给一个直接的下载地址:
http://gladewin32.sourceforge.net/modules/wfdownloads/visit.php?lid=99
这个版本集中了GLADE/GTK+,并且还有OPENGL的插件,并且集成了开发文档,比较全面。

1.1.3 安装
直接运行安装文件,它会提示你找到MSYS并给予相关配置,不用改什么,直接NEXT。
大约74MB,占地80MB。

1.1.4 测试
打开MSYS,输入
pkg-config.exe --cflags gtk+-2.0

你看到了什么?

1.2 GTK+的HELLO WORLD!
首先,在c:/projects/下建立文件夹gtk
其次,打开 开始->程序->GTK+->GLADE,设计GUI界面。在GLADE的GTK+ BASIC面板里点窗口(WINDOW)出现一个新窗口,然后选择标签(LABEL)(就是那个大A字),在窗口上点一下,一个新LABEL出现了。它显示的内容是“label1”,我们要改成“你好,GTK+!”在右边的WIDGET TREE里选中label1,然后在右下角的properties: label1里改变它的Label: 你好,GTK+!。然后点菜单Project->保存,保存到c:/projects/gtk/1.glade。
  PROJECT DIRECTORY: c:/projects/gtk/1
  project name:   1  program name: 1
  project file: 1.glade

然后,打开你喜欢的编辑器,写入下面代码并保存到c:/projects/gtk/1/1.c
1.c:

#include <gtk/gtk.h>
#include <glade/glade.h>

int main(int argc, char *argv[]) {
GladeXML *xml;

gtk_init(&argc, &argv);

xml = glade_xml_new("1.glade", NULL, NULL);

gtk_main();

return 0;
}

最后,编译运行。打开MSYS,运行下面的命令(注意,下面出现的`不是单引号,而是~号下面的,确保1.EXE和1.GLADE放在同一个目录下):
cd /c/projects/gtk/1
gcc 1.c -o 1 `pkg-config --cflags --libs gtk+-2.0 libglade-2.0`
./1

看到了什么?一个小小的窗口,里面有一句:你好,GTK+!

课后作业:
尽量折腾1.glade,用GLADE改无数次,然后运行1.EXE看看有什么效果。

 

 

你可能感兴趣的:(C++,c,properties,语言,Delphi,gtk)