Duilib中各個類的簡單介紹


轉自  http://note.sdo.com/u/icez/n/mvO-X~jyVnpFnM01A0000m

DirectUI意為直接在父窗口上繪圖(Paint on parent dc directly)。即子窗口不以窗口句柄的形式創建(windowless),只是邏輯上的窗口,繪制在父窗口之上。微軟的“DirectUI”技術廣泛的應用於Windows XP、Vista、Windows 7,如瀏覽器左側的TaskPanel,控制面板導航界面,Media Player播放器,即時通訊工具MSN Messager等。

DirectUI好處在於可以很方便的構建高效、絢麗的、非常易於擴展的界面。國外如微軟,國內如騰訊、百度等公司的客戶端產品多采用這種方式來組織界面,從而很好的將界面和邏輯分離,同時易於實現各種超炫的界面效果如換色、換膚、透明等。

DirectUI可以理解為一個輕量級的WPF,可以讓C++做出C#般絢麗的界面。目前國內做DirectUI皮膚庫的公司主要有兩家:第一家是UIPower(即Skin++的公司),網址www.uipower.com,其DirectUI產品網站www.directui.com,做的很專業;另一家是UIEASY,網址www.uieasy.com,一個輕量級皮膚庫DSkinLite。但是,網上關於DirectUI的技術文章卻很少;早在 6/26/2005,一個國外的程序員就已經寫了一個開源的DirectUI例子,應該算是國內所有directui界面庫的起源了,網址http://www.viksoe.dk/code/windowless1.htm,探討一種實現的可能性和思路,和實際應用雖有一定距離,不過卻是一個很好的學習資料。再后來,一個國內的程序員“當個傻瓜蛋”,基於此代碼,進行重構和修正Bug,並放到了google上開源,網址http://code.google.com/p/duilib/,下載地址svn checkout http://duilib.googlecode.com/svn/trunk/ duilib-read-only。

本人通過學習這個duilib的源代碼,學到了很多知識、思路和經驗,分享給看到此文的朋友,共同探討DirectUI技術,並歡迎大家加入到開發開源DirectUI皮膚庫的行列當中。分析難免有誤,見諒!

一、核心類
1.        CWindowWnd,窗口對象管理父類,主要作用:

1)        創建窗口。

2)        窗口消息過程處理。

3)        提供窗口子類化與超類化接口。

2.        CDialogBuilder,控件布局類,主要作用:

1)        讀取XML腳本,分析腳本,構建控件樹。

2)        創建控件對象。

3.        CPaintManagerUI,窗口消息及圖形繪制管理器類,與窗口綁定,主要作用:

1)        繪制控件。

2)        消息管理。

3)        事件通知。

4.        INotifyUI,事件通知抽象類,主要作用:

1)        重載Notify虛函數,處理事件通知。

二、控件類
1.        CControlUI,控件管理父類,主要作用:

1)        控件的通用基類,提供控件通用屬性管理。

2.        CLabelUI,靜態標簽類,父類CControlUI。

3.        CButtonUI,按鈕類,父類CLabelUI。

4.        COptionUI,選擇按鈕類,父類CButtonUI。

5.        CTextUI,靜態文本類,父類CLabelUI。

6.        CProgressUI,進度條類,父類CLabelUI。

7.        CSliderUI,父類CProgressUI。

8.        CEditUI,編輯框類,父類CLabelUI。

9.        CListUI,列表框類,父類CVerticalLayoutUI、IListUI。

1)        CListHeaderUI,父類CHorizontalLayoutUI。

2)        CListHeaderItemUI,列表頭類,父類CControlUI。

3)        CListTextElementUI,類表文本類,父類CListLabelElementUI。

4)        CListLabelElementUI,父類CListElementUI。

10.    CComboUI,組合框類,父類CContainerUI、IListOwnerUI。

11.    CActiveXUI,ActiveX控件類,父類CControlUI、 IMessageFilterUI。

12.    CContainerUI,容器類,父類CControlUI、IContainerUI。

13.    CTabLayoutUI,選項頁布局類,父類CContainerUI。

14.    CTileLayoutUI,父類CContainerUI。

15.    CDialogLayoutUI,對話框布局類,父類CContainerUI。、

16.    CVerticalLayoutUI,垂直布局類,父類CContainerUI。

17.    CHorizontalLayoutUI,水平布局類,父類CContainerUI。

18.    CListExpandElementUI,父類CListTextElementUI。

19.    CListContainerElementUI,父類CContainerUI、IListItemUI。

三、輔助類
       1.        CStdPtrArray,指針數組。

2.        CStdValArray,數據數組。

3.        CStdString,字符串數組。

4.        CStdStringPtrMap,字符串指針映射數組。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM