签到

05月05日
尚未签到

共有回帖数 0

    我们会发光

    等级:
    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:projectsgtk1.glade。
     PROJECT DIRECTORY: c:projectsgtk1
     project name:   1  program name: 1
     project file: 1.glade

    然后,打开你喜欢的编辑器,写入下面代码并保存到c:projectsgtk11.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看看有什么效果。

    楼主 2016-02-19 17:05 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知