通过介绍进入wxWidgets-《跟我学wxWidgets开发》系列教程

《跟我学wxWidgets开发》系列教程

第一章 wxWidgets介绍

首先引用官方的原译文介绍:

wxWidgets是由Julian Smart于1992年在爱丁堡大学创建成立的。一开始它只是作为一个可创建Unix和Windows操作系统可移植的项目启动的,现在它发展到了Mac平台、WinCE和很多其它工具包和平台上。贡献给该项目的开发人员数量现在有几十人,并且这个工具包有一个很强大的用户群体,包括所有来自开源开发机构的人,比如说美国在线服务公司AOL。那么,与其他跨平台的图形用户界面(GUI)工具包比起来,wxWidgets究竟有什么特别的地方呢?

wxWidgets提供单一的、易用的API接口,供你在多种平台下,用其平台的原生控件和实用工具,写出相应的图形用户界面应用程序。在你的平台下引用合适的库,然后用主流的C++编译器进行编译,你运行后会发现,程序将完全呈现出和你平台本身有的外观和感觉。在极强大的图形用户界面功能之上,wxWidgets还有在线的帮助,网络编程、流操作、剪贴板和可拽可拖操作、多线程、图像装载和多种主流格式存储、数据库支持、HTML浏览和打印等等更多功能。

通过上面的官方介绍,或许大家已经有了一个比较一致的印象:wxWidgets是一个历史悠久、基础雄厚的,可跨多种平台的多功能图形用户界面库。确实是这样的,wxWidgets发展时至今日已经有21年,一直以来它在一步步的成熟完善,最初它曾被命名wxWindows,它受着Windows的MFC的深远影响,很多概念都和MFC很类似,最初命名的基本含义也就是MFC的移植库,后面为了不让使用者引起“只能在Windows下使用”的歧义,才正式改名为wxWidgets。

好了,基本情况大家已经知道,接下来,在这里我不得不客观陈述一下wxWidgets的优缺点。

首先是它的优点:
1.其它任何库无法比拟的优点:wxWidgets采用LGPL协议及一个附加条款进行开源,它意味着wxWidgets完完全全的开源免费。不论你用于个人还是商业用途,一切都是免费的。关于协议的描述是这样的:你可以在程序中动态链接wxWdigets库,也可以静态链接。如果你对wxWidgets本身做了修改,你必须公开这一部分源代码,而完全属于你自己的那部分代码你不需要公开。
2.本基于第1点,它的衍生库很多也是基于开放性开源协议LGPL授权的,也是可以免费使用的。从这一点上说,它的使用成近乎0。
3.wxWidgets是一个跨平台的库,它支持近乎所有的操作系统,甚至包括很多可携带式的设备平台,如PDA、Windows 手机、iPhoneSDK以及嵌入式GTK+等等。并且需要说明一下,学C++的人都知道,这种跨平台不同于JAVA的跨平台性,它是代码可跨平台,它的代码能在不同的平台下编译,而且编译后的程序运行起来就和当前平台的外观是一致的!它不会像JAVA那样在哪都是一个样,还得装上JAVA运行环境。(补充:wxWidgets官方2012发布了一项计划,正在积极准备投入开发针对Android平台的wxWidgets库,如果计划正式启动那将又是一项非常可观的扩展)
4.wxWidgets内部用了很多的宏来保持界面的原生性,这就意味着你写同一段代码,在各系统上运行结果界面和操作都可以是不一样的,在XP上呈现的是XP风格的窗体和控件,在Linux上呈现Linux风格的窗体和控件。
5.wxWidgets支持很多的编译器,如VC、GCC等,甚至包括曾经大名鼎鼎的Borland的C++Builder都特别提供了对它的支持。

然后它的缺点在于:
1.官方文档不全。如果这点做到和MSDN这种水平,估计能掌握和使用它的人会成倍增加。
2.相关书籍和文献不多,尤其是中文类的那是更少,所以对国人来说学习成本比较高,需要极具耐心地长期学习和钻研。
3.没有形成大规模的产业模式,没有强大的RAD界面生成软件支持,大型界面开发比较麻烦。

在本章最后,附上wxWidgets和其他跨平台开发库比拼的PK图表以及几个我接触过的用wxWidgets开发的软件:

我接触过的基于wxWidgets库的软件:

BitWise IM   ——   一个企业级即时聊天软件
软件地址:http://www.bitwiseim.com/

Audacity     ——   一个数字音乐处理程序,我用它来录歌,边弹边唱,效果很棒,好不开心!
软件地址:http://audacity.sourceforge.net/

wxForms      ——   一个跨平台界面开发工具,我用它和VC组合开发过wxWidgets软件。
软件地址:http://twinforms.com/


郑重声明:
除特别声明为转载内容外,本站所有内容均为作者原创,谢绝任何单位和个人不经许可的复制和转播!
对于确有转载需要的,请先与作者联系,在获得允许后烦请在转载时保留文章出处。
本文出自Lupin's Blog:http://www.cnzui.com/archives/926