乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       orion360doc 2011-01-16

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

      Linux 2009-05-25 14:02:36 閱讀392 評論0   字號: 訂閱

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

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

        wxWidgets體系結(jié)構(gòu) - 雪舞九天 -   雪舞九天

      2 Libraries 列表

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

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

        wxWidgets體系結(jié)構(gòu) - 雪舞九天 -   雪舞九天

           1wxAui

           包含著高級用戶界面 docking library。

           2wxBase

           所有wxWidgets程序都必須鏈接本 library。包含了許多數(shù)據(jù)結(jié)構(gòu)類以及其他公共基類(如wxString,wxWindowbase等)。抽象了平臺間的不同。wxBase 可以用來開發(fā)控制臺程序,不需要任何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文檔的類。不建議使用。將來的版本將包含新的XML處理類,包含類似DOMAPI。

           6wxCore

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

           7wxAdvanced

           高級或是不常用的GUI類。

      wxBufferedDC

      wxCalendarCtrl

      wxGrid classes

      wxJoystick

      wxLayoutAlgorithm

      wxSplashScreen

      wxTaskBarIcon

      wxSound

      wxWizard

      wxSashLayoutWindow

      wxSashWindow

           8wxMedia

           多媒體類。目前僅包括wxMediaCtrl ,將來將加入更多的類。

           9wxGL

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

           10wxHTML

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

           11 wxODBC

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

           12 wxQA

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

           13 wxDbGrid

           wxDbGridTableBase 類組合了 wxGrid and wxDbTable。

           14 wxXRC

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

       

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

        wxWidgets體系結(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)與平臺無關(guān)的高級 widgets。如 wxWizard wxCalendarCtrl等。

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

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

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

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

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

       

       

      4 類繼承關(guān)系

       

       wxWidgets體系結(jié)構(gòu) - 雪舞九天 -   雪舞九天

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

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

           其中wxWindowGTKwxTopLevelWindowGTK是于平臺有關(guān)的類,源碼位于gtk目錄下。Window下對應(yīng)的類是wxWindowMSWwxTopLevelWindowMSW,位于msw目錄下。當(dāng)編譯代碼時(shí),wxWidgets怎么知道編譯哪一個(gè)類呢?主要是wxWidgets通過不同的宏定義來實(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ān),可以編譯出平臺相關(guān)的類庫。

       

      參考文獻(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

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多