在讀這篇博客的時候,可能您已經對duilib有一定的了解。所以,我並不打算對duilib進行過多的介紹。它的內核首先由外國人編寫,后來由國人一個小組接過來繼續編寫,於是就有了現在的Duilib。
1.下載Duilib
首先它托管在Google,后來不知道是不是由於大陸將 Google 全面封鎖,將搜索引擎禁用了不算,還將技術網站都封閉了。所以,Duilib又托管到了 Github。所以在學習它之前,你需要學習如何利用Github,將Duilib下載到本地進行編譯、運行。
1)首先下載 GitHub for Windows. https://windows.github.com/
2)注冊一個帳號。
3)打開網站https://github.com/duilib/duilib
看到網站右邊的按鈕,如上圖的紅框處,點擊”Clone in Desktop”按鈕,保存到自己的帳號中,並能下載到本地中,保存到本地,主要是為了便於即時更新。當Duilib有更新時,你可以利用本地的Github工具進行更新。
4)打開本地的目錄。
如上圖右上角的紅框操作。
2.編譯DUILIB
DuiDesigner.sln 這個文件是 XML 編輯器。
DuiLib.sln 這個是DUILIB 源文件及Demo源文件。
使用VS2008進行編譯。
3.Dui原理小解。
原來的WINDOWS界面,主要是要WND疊加組成,如:
每個WND都有自己的消息處理循環。這樣不好的地方是,
1)繪制不方便。比如你要在一個Button上繪制一張半透明的背景圖片,如果你使用了 MemDC,要處理透明繪制就會相當麻煩,甚至會有難以預測的BUG。
2)可以給病毒可趁之機。可以利用FindWindow查找Button的句柄,然后向它發送WM_LBUTTONDOWN和WM_LBUTTONUP消息,就可以實現單擊的效果。以前舊版的QQ就存在這個BUG。現在已經很少有這個BUG了。
Dui一個Wnd它的上面沒有多余的Wnd,所以的控件都是虛擬出來的,並不具備自己的消息循環,它們都用WND的消息循環。簡單的描述如下圖:
將消息傳遞到控件,主要就是通過 control_from_point 這樣的一個函數,通過鼠標的座標點進行判斷是哪個控件,並將由該控件進行響應鼠標消息。
Duilib 的簡單介紹就到這里了。
在學習一個東西的時候,我並不傾向於一開始就學習內核、源碼。我覺得首先應該學習如何何用它,當你會用它了,去理解它的內核代碼才會順暢,也才看得明白。
所以,下一節將介紹 UIDesigner 的使用。