分类: LINUX
2008-01-04 16:29:18
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.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正式发布,包括了对各个类别都做了修正。