999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

WxWidgets框架應用及其模塊化開發

2009-07-07 09:11:58
新媒體研究 2009年22期
關鍵詞:跨平臺模塊化

張 羽

[摘要]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進行模塊化開發

從用戶需求和系統要實現的任務功能出發,把大型的軟件劃分為相對較小的模塊。為了減少模塊與模塊之間的關聯性,模塊之間的邏輯結構相對獨立。以筆者的linux平臺為例,簡單介紹模塊化開發的過程。

1.設計自定義控件模塊的功能,模塊的輸入輸出、對外接口、事件處理等。

2.編譯控件。這一個步驟可以編寫makefile進行自動編譯,也可以直接使用g++命令進行編譯。編譯生成的目標文件后綴名一般為o。

3.在所需要使用的平臺上測試這個控件,測試事件處理、輸入輸出數據和對外接口。

四、總結

作為一個功能強大的跨平臺的并支持多種語言的類庫,wxWidgets既可以開發GUI應用程序,也有許多非GUI的功能來開發應用程序。在越來越追求軟件復用的現代軟件開發方法中,軟件的模塊化、組件化越來越重要,設計良好的wxWidgets模塊可以實現軟件復用。

參考文獻:

[1]Julian Smart,Kevin Hock,Stefan Csomor.Cross-Platform GUI Programming with wxWidgets.

[2]熊凱、高茂庭、于仁師,C++語言開發跨平臺程序的研究與實現[J].電腦知識與技術,2006(2):127-130.

[3]朱丙立、熊江,跨平臺框架程序wxWidgets的應用[J].電腦知識與技術,2006(5):132-133.

猜你喜歡
跨平臺模塊化
跨層級網絡、跨架構、跨平臺的數據共享交換關鍵技術研究與系統建設
模塊化自主水下機器人開發與應用
基于模塊化控制系統在一體化教學中的應用
一款游戲怎么掙到全平臺的錢?
電腦報(2021年11期)2021-07-01 08:10:05
模塊化住宅
現代裝飾(2020年5期)2020-05-30 13:01:56
跨平臺APEX接口組件的設計與實現
測控技術(2018年9期)2018-11-25 07:44:58
ACP100模塊化小型堆研發進展
中國核電(2017年2期)2017-08-11 08:00:56
從模塊化中得到的二氧化碳
流程工業(2017年4期)2017-06-21 06:29:52
模塊化VS大型工廠
流程工業(2017年4期)2017-06-21 06:29:50
基于QT的跨平臺輸電鐵塔監控終端軟件設計與實現
主站蜘蛛池模板: 亚洲床戏一区| 欧美日韩国产一级| 中文字幕欧美日韩高清| 一级毛片在线播放免费观看| 久久精品国产电影| 亚洲三级电影在线播放| 亚洲娇小与黑人巨大交| 综合网久久| 在线日韩一区二区| 激情亚洲天堂| 在线欧美日韩| 国产精品极品美女自在线看免费一区二区| 国产精品成人观看视频国产 | 国产国产人成免费视频77777 | 99ri国产在线| 精品福利视频导航| 亚洲中文字幕23页在线| 亚洲午夜片| 高h视频在线| 青青操国产视频| 欧美在线三级| 国产18页| 先锋资源久久| 中文国产成人久久精品小说| 免费Aⅴ片在线观看蜜芽Tⅴ| av午夜福利一片免费看| 亚洲欧美综合另类图片小说区| 国产青榴视频| 亚洲国产精品成人久久综合影院| 美女无遮挡被啪啪到高潮免费| 91九色最新地址| 性欧美在线| 精品国产香蕉伊思人在线| 大香网伊人久久综合网2020| 一本久道热中字伊人| 伊人天堂网| 国产成人一区| 99福利视频导航| 亚洲欧洲日产无码AV| 美女视频黄频a免费高清不卡| 亚洲国产天堂久久综合| 色综合天天综合| 亚洲v日韩v欧美在线观看| 国产精品性| 国产乱子精品一区二区在线观看| 中文字幕天无码久久精品视频免费 | 99久久精品国产精品亚洲 | 日本人又色又爽的视频| 55夜色66夜色国产精品视频| 97视频在线观看免费视频| 手机在线国产精品| 国产97视频在线| 成年看免费观看视频拍拍| 伊人成人在线| 欧美黄网在线| 99热亚洲精品6码| 国模粉嫩小泬视频在线观看| 久久久久人妻精品一区三寸蜜桃| 日韩国产高清无码| 亚洲AV无码久久天堂| 一级毛片无毒不卡直接观看 | 亚洲第一国产综合| 国产91九色在线播放| 2048国产精品原创综合在线| 九九九久久国产精品| 波多野结衣一区二区三区四区视频| 日韩一级毛一欧美一国产| 亚洲美女一区二区三区| 国产视频只有无码精品| 国产精品视频免费网站| 欧美.成人.综合在线| 久久亚洲精少妇毛片午夜无码| 国产一区二区三区免费观看 | 欧美日韩午夜| 国产主播一区二区三区| 国产一区二区三区视频| 亚洲成年人网| 欧美有码在线观看| 2021国产精品自产拍在线观看 | 欧美日韩动态图| 日本欧美视频在线观看| 久久国产免费观看|