- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WxWidgets框架的应用及其模块化开发
WxWidgets框架的应用及其模块化开发
[摘要]wxWidgets是简单易用的跨平台程序开发包,它可以在多种操作系统上开发图形用户界面。深入研究wxWidgets的类库,包括它的基本特性、事件处理机制以及wxWidgets在软件模块化开发方面的应用。
[关键词]wxWidgets跨平台式模块化图形用户界面
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)1120067-01
wxWidgets由Julian Smart于1992年在爱丁堡大学首先创建,随着wxWidgets的不断发展,适用的平台也越来越多。现在的wxWidgets已经不再是单纯的跨平台的GUI软件开发包,而是一个可以支持多种操作系统平台的能够在多种语言中使用的跨平台软件开发包。目前支持C++的其他软件开发包很多,比如MFC、QT、ACE等。MFC是微软提供的软件开发包,MFC只能在Windows平台下运行。QT和wxWidgets类似,但使用QT的商业版本,需要支付费用。ACE虽然是免费开源的,但没有GUI功能。
一、wxWidgets框架
wxWidgets是一个高品质应用程序类库,尽管它是开源的,但有人称其具有商业品质,它的用户包括了AOL,AMD,NASA等大的商业和团体机构。wxWidgets这款框架的优势是真正意义上的跨平台,wxWidgets提供了一套在多种平台上编写GUI程序的应用程序接口,wxWidgets提供的API函数在它支持的所有平台上都是相同的。wxWidgets给应用程序提供和当前系统平台上其它应用程序相似的外观。
二、使用wxWidgets
(一)wxWidgets框架
wxWidgets框架的设计思想是用户程序员利用wxWidgets工具箱中提供的类拼装自己需要的应用程序,并组合事件处理形成完整的应用程序。每一个wxWidgets程序都需要定义一个wxApp类的子类,需要创建并且只能创建一个这个类的实例,这个实例控制着整个程序的执行。wxWidgets应用程序中不会出现main(),而由宏IMP LEMENT_APP(wxApp)代替。用户程序员可以利用界面构造库中提供的类进行编程,但用户至少要先建立一个wxWidgets类库中直接由操作系统的窗口管理器管理的窗口类。这些窗口类是应用程序的最上层窗口,这个窗口可以使用wxFrame、wxDialog直接创建,也可以从它派生自己的Frame、Dialog,在这些类上建立wxPanel等实例,最后再实例化wxControl,并为各种控件添加相应的事件表和事件处理函数。
(二)事件处理机制
所有的GUI程序都是事件驱动的,应用程序一直停留在一个循环中,等待着来自用户或者其他什么地方的事件,一旦收到某种事件,应用程序就扔给处理这个事件的函数。wxWidgets能处理的事件类型有键盘事件和鼠标事件等,它们都是wxEvent的子类。在wxWidgets中,事件处理没是通过事件映射表将控件接收的事件与事件处理函数联系起来。
BEGIN_EVEN_TABLE(TextFrame,wxFrame)
//此处添加事件映射
EVT_BUTTON(ID_CLICK,TextFrame::OnClick)
END_EVENT_TABLE()
上述宏将TextFrame类中id为ID_CLICK的按钮按下的事件映射到该类的OnClick函数处理,OnClick函数具有这样的形式:
void OnClick(wxCommandEvent event)
在类TextFrame的定义中还要插入一个宏DECLARE_EVENT_TABLE(),这个宏能够为事件映射表生成所需的数据成员和函数声明。
三、wxWidgets模块化开发
(一)wxWidgets自定义控件的开发
编写wxWidgets的一个自定义的控件需要下面的步骤:
1.编写类声明,通常情况下这个类是继承自wxControl的,这个类也可以继承自其它控件类,如wxButton。
2.如果已有的事件类不能满足需要,可以为控件增加新的事件类。对于按钮被按下的事件,使用已有的EVT_COMMAND就可以了。并且如果你增加了新的事件类,应增加相应的事件映射宏。新增事件类型,需要在头文件添加:
DECLARE_EVENT_TYPE(wxEVT_MY_EVENT,id)
声明新的事件类型;在实现文件添加:
DEFINE_EVENT_TYPE(wxEVT_MY_EVENT)
(二)利用wxWidgets进行模块
您可能关注的文档
- VR图书馆的研究.doc
- VR技术下“NL”全维行业英语教学的模式的应用探析.doc
- Vr视角看室内的设计.doc
- VS 的环境下XML 解析实现.doc
- VR购物 超现实零距离打通新的模式.doc
- VR技术条件下财务管理专业体验式的案例教学探究.doc
- VSD护理新进展的探讨.doc
- VSCHVDC双积分滑模解耦控制器的设计.doc
- VSAT通信系统在陆军船艇中的应用.doc
- VUCA时代下跨境电商HR―BP的模式优化的研究.doc
- 2010-2023历年福建省德化一中高一第一次质检政治试卷(带解析).docx
- 2010-2023历年福建省八闽一中协作校高三内部模拟物理试卷(带解析).docx
- 2024年中国48通路表桥市场调查研究报告.docx
- 2024年中国沙贝利吸塑拉门市场调查研究报告.docx
- 2010-2023历年福建省建瓯二中高一下学期期末考试化学试卷(带解析).docx
- 2024年中国热熔线标涂料市场调查研究报告.docx
- 2024年中国硅胶指套市场调查研究报告.docx
- 2024年中国蒸熏炉市场调查研究报告.docx
- 2010-2023历年福建省福州市八县(市)高一下学期期中联考化学试卷.docx
- 2010-2023历年福建省福州三中高三第二次月考英语试题.docx
文档评论(0)