wxWidgets介绍

1.1 什么是wxWidgets?
        wxWidgets是用来为普通桌面程序和移动设备程序开发用户界面的工具包。由于它是一个框架(Framework),所以它在提供标准程序行为的同时也消除了程序底层的复杂性。wxWidgets库包括了大量的类和方法供程序员使用,甚至可供程序员定制其中某些类别以满足不同的需求。一个典型的应用程序窗口包括标准的控件,特殊图形的绘制和对来自鼠标键盘等输入设备的响应。同时也与其它进程通信或是驱动其它程序。换句话说,程序员利用wxWidgets开发软件,能实现现代程序能实现的所有功能,并且相对轻松。
        尽管wxWidgets通常被成为“用户图形界面开发工具包”,但事实上它所提供的功能决不仅限于此。它的其他特性能够应用与软件开发的各个方面。这个特点很重要,因为所有基于wxWidgets的应用程序都应能移植到不同的平台,而不仅仅是移植界面。wxWidgets提供了各种类库用以支持文件流(files and streams)、多线程、程序设置、进程间通信、在线帮助、数据库访问等等。

1.2 为什么使用wxWidgets?

        wxWidgets与其他相似类型的框架(如MFC,OWL)不同的一点是,它具有跨平台(MultiPlatform)的特性。wxWidgets为其所支持的各种平台提供几乎一致的应用程序接口(API),这意味着在Windows上编写的程序,经过很少的修改(甚至原封不动),就可以在Linux平台上重新编译。由此带来巨大的经济利益,避免了同一软件需要在不同平台上全部重新编写时产生人力物力上的浪费。同时也减少了程序员的负担,因为他们不需要再去强记不同平台的应用程序接口。此外,wxWidgets能够增强应用程序的持久性。随着计算机业的不断发展,wxWidgets框架也随之不断的更新,使得基于wxWidgets框架的程序能够轻松移植到最新最好的系统平台上去。
        另一点不同是wxWidgets提供本地的外观(Native look and feel)。有些框架为不同平台提供相同的窗体效果,或者使用某些预先设定的主题来仿真实现与平台相仿的外观。相对而言,wxWidgets使用了本地的窗口装饰,所以程序外观不仅看起来与主平台一致,而且事实上它就是本地外观。这对于用户来说时非常重要的,因为程序运行时,它所产生的行为哪怕是相对平台标准有一丁点的不同,都会令用户有不好的感受。为了描述这一点,图1-1展示了一个运行在WindowsXP平台上的基于wxWidgets的小说创建程序。它叫做Storylines,用来帮助小说写手创建他们的故事。


图1-1 运行在WindowsXP下Storylines

        很容易看出来这是一个标准的Windows程序,具有符合标准Windows平台的GUI元素,如标签页(Tab),滚动条(Scollbar),下拉列表(Drop-down List)等等。同样,图1-2展示了Storelines运行与Mac OS X的界面。如期待的一样,它使用的是Mac OS X 标准的Aqua外观,在窗口中没有菜单栏,因为在Mac中,习惯将菜单栏放在屏幕顶部。

图1-2 运行在Mac OS X 下的Storylines

        图1-3展示的是其运行作为GTK+程序运行在红帽Linux上的界面。


图1-3 运行在RedHat Linux,GTK+下的Storylines

        我们不禁要问,为什么不用Java呢?事实上,尽管Java非常有利于开发网络程序,但在开发桌面应用程序的时候,Java并不是一个很好的选择。通常情况下,采用wxWidgets框架开发的C++程序由于不依赖Java虚拟机,所以运行速度更快,具有更多的可视外观,并且易于安装。同时C++支持更多的系统底层访问,与已有的C/C++代码也很容易融合到一起。由于以上原因,现在我们通常使用的桌面应用软件只有极少一部分是采用Java开发的。使用wxWidgets进行开发,能给用户带来更高的运行效率和更真实的界面效果。
        wxWidgets是一个开源项目,使用wxWidgets不需要支付任何的费用,这也使得wxWidgets具有更深层的哲学和战略上的意义。开源软件的存活期都很长。作为使用wxWidgets的程序员,你知道你所依赖的代码永远都不会消失。在使用时遇到问题,也可以通过修改源代码来解决。如果加入开源社区,你能获得更多的乐趣,开源项目的参与者通常都在这里,因为他们热爱自己的工作,迫不及待的希望与大家共同分享自己的知识和经验。这比寻求公司支持人员的帮助要好,因为这些支持人员一般都没有开源社团参与者如此大的动力。选择wxWidgets,也意味着你选择了一个不可思议的智慧的结晶,因为参与开发wxWidgets的人员具有广阔背景。很多时候,你为实现某些功能,需要费尽全力的编写代码,然而很可能这些功能已经被这些开发人员封装成为很容易使用的类,你需要的只是在你的代码里正确的使用它们。你也能通过邮件列表从活跃的用户社区寻求帮助,和不同的程度的开发人员进行讨论各种问题。或许有一天,你也可能成为成功的wxWidgets开发成员中的一员!
        wxWidgets获得了业界广泛的支持,用户包括AOL(美国在线), AMD, CALTECH(加利福尼亚理工学院), NASA(国家航空和宇宙航行局), the Open Source Applications Foundation(开源项目基金会), Xerox(乐施)等著名企业和机构。wxWidgets的用户群遍及各个领域,从个人软件开发者到大型软件公司,从计算机学院到医疗研究机构,从生态学研究到电信产业。它也被运用于无数的开源项目,像Audacity音频编辑器,pgAdmin III数据库设计管理系统等。
人们选择wxWidgets的理由很多,有的是希望寻找一个MFC的替代品,有的希望使自己的程序能轻易的在各个平台上移植。wxWidgets也将移动平台作为挑战,目前支持嵌入式Linux平台,微软Pocket PC,以及即将完成的对Palm OS的支持。

1.3 wxWidgets历史回顾

        wxWidgets项目开始于1992年,当时就读于爱丁堡大学的Julian Smart正在开发一个叫做Hardy的图表绘制工具。由于不希望这个软件只能被部署在Sun工作站或者PC机等特定的平台上,所以他开始寻求一种跨平台的解决方案。但当时几乎没有现成的跨平台框架可供选择,而且他的学校也没有为开发这种框架作投资的打算,所以Julian Smart除了自己编写一个这种框架外,别无它法。1992年9月,在他完成了wxWidgets 1.0之后,学校同意他将其上传到学校的FTP空间里供其他开发人员使用。此时的wxWidgets是面向XView和MFC1.0的,所以引起了Borland C++用户的不满,于是Julian Smart采用纯Win32代码重写了wxWidgets面向Win32平台的类别。由于XView很快被Motif所取代,随之wxWidgtes提供了Motif支持。
        很快,wxWidgets的用户创建了一个虽小却充满激情的社区,并建立了邮件列表,大量的新代码和补丁融入到了wxWidgets中,Markus Holzem还使wxWidgets开始支持Xt。wxWidgets的用户逐渐增多,包括个人,院校,政府部门。最令人振奋的是大量企业用户认为wxWidgets甚至比他们见过和使用过的同类商业产品更优秀。
        到1997年,在Markus Holzem的帮助下,新版的wxWidgets 2 API问世。此时,Wolfram Gloger建议wxWidgets应该支持GTK+,于是wxWidgets提供了与GNOME桌面系统一致的窗口样式。Robert Roebling成为了wxGTK的主要开发人员,而wxGTK现在已经成为Unix/Linux环境下最主要的wxWidgets框架。1998年,Windows和GTK+两类被结合到一起,开始采用版本控制系统(CVS),Vadim Zeitlin加入到开发团队中,贡献了大量的设计和代码。同时,Stefan Csomor开始开发Mac OS类。
        1999年,Vaclav Slavik展示了令人印象深刻的wxHTML 类和基于HTML的帮助浏览器。2000年,SciTech公司发起了wxUniversal的开发工作,它采用wxWidgtes自己的窗口外观,而不依赖于任何特定平台。随后wxWidgets第一次被SciTech用在了MGL项目,这是一个底层的图像层。
        2002年, Julian Smart和Robert Roebling利用wxUniversal widgets增加了wxX11类。wxX11适合任何Unix/X11环境,并能被配置较低的系统所使用。
        2003年7月,wxWidgets开始运行于Windows CE平台,同时Robert Roebling示范了在嵌入式Linux上运行的wxGTK程序。
        在2004年,由于微软认为“wxWindows”侵犯了自己的商标权,所以“wxWigets”成为了新的名称。
同样在2004年,Stefan Csomor和一大群开发人员完成了对wxMac的修正,使之在Mac OS上开发的软件具有很好的外观和性能。对Cocoa的支持也在David Elliot的领导下稳步的进行。William Osborne完成了对Palm OS支持的最初阶段,使得“Minimal”程序能够运行于Palm OS平台上。2005年3月,wxWidgets2.6正式发布,包括了对各个类别都做了修正。
wxWidgets未来计划:

l        创建工具包管理工具,使得wxWidgets能更容易的集成第三方组件。

l        提高对嵌入式系统的支持

l        提供多样的事件驱动机制

l        提供增强控件,如将树型控件和列表空间综合到一起

l        开发wxHTML 2,使其在所以平台上都具有完整的Web控制能力。

l        提供对STL等更好的兼容性

l        Palm OS完整的支持

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值