免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
wxWidgets體系結(jié)構(gòu)

wxWidgets體系結(jié)構(gòu)

Linux 2009-05-25 14:02:36 閱讀392 評(píng)論0   字號(hào): 訂閱

1 體系結(jié)構(gòu)

     wxWidgets的體系結(jié)構(gòu)下圖所示。wxWidgets的體系結(jié)構(gòu)可以分為4層:wxWidgets公共API層,各個(gè)平臺(tái)Port,用于各個(gè)平臺(tái)的API以及操作系統(tǒng)。

 

2 Libraries 列表

     從版本 2.5.0以后,wxWidgets既可以編譯成單一的一個(gè)大的ibrarymonolithic build),也可以編譯成幾個(gè)小的 librariesmultilib build)。WxWidgets默認(rèn)的是編譯成multilib build

     下圖列出了wxWidgets libraries以及他們之間的依賴關(guān)系。

 

     1wxAui

     包含著高級(jí)用戶界面 docking library。

     2wxBase

     所有wxWidgets程序都必須鏈接本 library。包含了許多數(shù)據(jù)結(jié)構(gòu)類以及其他公共基類(如wxString,wxWindowbase等)。抽象了平臺(tái)間的不同。wxBase 可以用來(lái)開發(fā)控制臺(tái)程序,不需要任何GUI libraries。

     3wxNet

     網(wǎng)絡(luò)開發(fā)有關(guān)類:

wxSocket (wxSocketClient, wxSocketServer 以及其他相關(guān)類)

wxSocketOutputStream wxSocketInputStream

sockets-based IPC (wxTCPServer, wxTCPClient and wxTCPConnection)

wxURL

wxInternetFSHandler (a wxFileSystem handler)。

     4wxRichText

     通用 rich text 控件。

     5WxXML

     包含解析XML文檔的類。不建議使用。將來(lái)的版本將包含新的XML處理類,包含類似DOMAPI。

     6wxCore

     基本GUI類,如 GDI類或控件。所有wxWidgets GUI 應(yīng)用程序必須引用本庫(kù)。

     7wxAdvanced

     高級(jí)或是不常用的GUI類。

wxBufferedDC

wxCalendarCtrl

wxGrid classes

wxJoystick

wxLayoutAlgorithm

wxSplashScreen

wxTaskBarIcon

wxSound

wxWizard

wxSashLayoutWindow

wxSashWindow

     8wxMedia

     多媒體類。目前僅包括wxMediaCtrl ,將來(lái)將加入更多的類。

     9wxGL

     包含wxGLCanvas 集成OpenGL library。與其他類不同的是,本library不是 monolithic library的一部分,而是總是編譯成一個(gè)獨(dú)立的library

     10wxHTML

     HTML renderer及其相關(guān)類。

     11 wxODBC

     數(shù)據(jù)庫(kù)類。

     12 wxQA

     質(zhì)量保證類庫(kù)。目前僅有 wxDebugReport 以及相關(guān)類。

     13 wxDbGrid

     wxDbGridTableBase 類組合了 wxGrid and wxDbTable。

     14 wxXRC

     包含wxXmlResource類,讀取XRC 格式的XML資源文件。

 

3 內(nèi)部代碼組織結(jié)構(gòu)

 

 

 

    如圖,是wxWidgets源代碼組織結(jié)構(gòu),大體可以分為六層:

     1 )通用代碼部分(位于common目錄內(nèi))。被所有的版本使用,包括數(shù)據(jù)結(jié)構(gòu),運(yùn)行期類型信息,一些被其他類繼承的基類,如wxWindowBase等。

     2) 一般代碼部分(位于generic目錄內(nèi))。實(shí)現(xiàn)與平臺(tái)無(wú)關(guān)的高級(jí) widgets。如 wxWizard wxCalendarCtrl等。

     3wxUniversal部分(位于univ目錄內(nèi))?;敬翱诳丶?,可以用于不提供本地窗口控件的平臺(tái)如X11MGL使用。

     4 )平臺(tái)相關(guān)代碼(位于gtk、msw等目錄內(nèi))。使用本地API實(shí)現(xiàn)類。

     5 )外來(lái)代碼部分,放在一個(gè)單獨(dú)的目錄結(jié)構(gòu)中(contrib目錄,本圖沒(méi)有列出,位于上一級(jí)目錄)。

     6)第三方代碼(位于jpeg,png,regexzlib等目錄中),這些都是獨(dú)立于wxWidgets的項(xiàng)目,但是wxWidgets使用來(lái)實(shí)現(xiàn)許多重要的功能。

     wxWidgets libraries 和內(nèi)部代碼組織具有交叉關(guān)系。如wxNet庫(kù)里既包含通用代碼又包括平臺(tái)相關(guān)代碼部分,其他的庫(kù)又可能包括一般代碼部分。

 

 

4 類繼承關(guān)系

 


    如圖,列舉了wxBasewxCore中部分類的繼承關(guān)系。

     其中wxObject是其他絕大部分類的基礎(chǔ),是萬(wàn)類之首。凡派生于wxObject的類,得以繼承數(shù)個(gè)面向?qū)ο蟮闹匾匦裕?span style="FONT-FAMILY: Tahoma, serif">RTTI(執(zhí)行期類型識(shí)別),Dynamic Creation(動(dòng)態(tài)生成)等。

     其中wxWindowGTKwxTopLevelWindowGTK是于平臺(tái)有關(guān)的類,源碼位于gtk目錄下。Window下對(duì)應(yīng)的類是wxWindowMSWwxTopLevelWindowMSW,位于msw目錄下。當(dāng)編譯代碼時(shí),wxWidgets怎么知道編譯哪一個(gè)類呢?主要是wxWidgets通過(guò)不同的宏定義來(lái)實(shí)現(xiàn)的:

     在app.h中,你可以發(fā)現(xiàn)以下代碼:

  1. #if defined(__WXPALMOS__)
  2. #include "wx/palmos/app.h"
  3. #elif defined(__WXMSW__)
  4. #include "wx/msw/app.h"
  5. #elif defined(__WXMOTIF__)
  6. #include "wx/motif/app.h"
  7. #elif defined(__WXMGL__)
  8. #include "wx/mgl/app.h"
  9. #elif defined(__WXDFB__)
  10. #include "wx/dfb/app.h"
  11. #elif defined(__WXGTK20__)
  12. #include "wx/gtk/app.h"
  13. #elif defined(__WXGTK__)
  14. #include "wx/gtk1/app.h"
  15. #elif defined(__WXX11__)
  16. #include "wx/x11/app.h"
  17. #elif defined(__WXMAC__)
  18. #include "wx/mac/app.h"
  19. #elif defined(__WXCOCOA__)
  20. #include "wx/cocoa/app.h"
  21. #elif defined(__WXPM__)
  22. #include "wx/os2/app.h"

 

     類似的在window.h中,你可以發(fā)現(xiàn):

  1. #if defined(__WXMSW__)
  2. #define wxWindowNative wxWindowMSW
  3. #elif defined(__WXGTK__)
  4. #define wxWindowNative wxWindowGTK
  5. #elif defined(__WXMGL__)
  6. #define wxWindowNative wxWindowMGL
  7. #elif defined(__WXX11__)
  8. #define wxWindowNative wxWindowX11
  9. #elif defined(__WXMAC__)
  10. #define wxWindowNative wxWindowMac
  11. #endif
  12. class WXDLLEXPORT wxWindow : public wxWindowNative
  13. ......

 

     通過(guò)指定不同的編譯開關(guān),可以編譯出平臺(tái)相關(guān)的類庫(kù)。

 

參考文獻(xiàn)

 

Cross-Platform GUI Programming with wxWidgets》,Julian Smart and Kevin Hock with Stefan Csomor.

wxWidgets 2.8.9: A portable C++ and Python GUI toolkit》,Julian Smart, Robert Roebling, Vadim Zeitlin, Robin Dunn, et al

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
codelite + MinGW + wxWidgets 配置問(wèn)題
wxPython:python 首選的 GUI 庫(kù)
小程序 條件渲染
[wxWidgets]
3個(gè)APP,讓手機(jī)攝影更強(qiáng)大
aMule源碼安裝配置詳解
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服