1
#include "..\duilib\uilib.h"
2
using
namespace
duilib;
3
#ifdef _debug
4
# ifdef _unicode
5
# pragma comment(lib, "..\\bin\\duilib_ud.lib")
6
# else
7
# pragma comment(lib, "..\\bin\\duilib_d.lib")
8
# endif
9
#else
10
# ifdef _unicode
11
# pragma comment(lib, "..\\bin\\duilib_u.lib")
12
# else
13
# pragma comment(lib, "..\\bin\\duilib.lib")
14
# endif
15
#endif
在工程中的stdafx.h標頭檔案中新增上述**。當然,也並不一定非要在stdafx.h檔案中新增,根據自己工程的實際情況進行設定即可。
在duilib中,所有的視窗均繼承自cwindowwnd類,在cwindowwnd類中由虛函式handlemessage來處理windows訊息(如wm_create、wm_size等等),所以對於本例的窗體類,同樣需要繼承cwinowwnd,同時窗體類中需要重寫虛函式handlemessage用於windows訊息的處理。
而對於duilib,我們此時更關心是介面元素是如何建立顯示出來的。實際上,在create建立窗體類時會觸發wm_create訊息,這個訊息也就都由窗體類中的handlemessage函式來處理,具體可檢視示例**窗體類中該函式。wm_create訊息對應的訊息處理函式oncreate:
1
lresult
cmainwnddlg::oncreate(
uint
umsg,
wparam
wparam,
lparam
lparam,
bool
& bhandled )
2
在窗體類的oncreate函式中載入窗體對應的xml布局檔案並動態建立介面元素。
1
int
apientry _twinmain(
hinstance
hinstance,
2
hinstance
hprevinstance,
3
lptstr
lpcmdline,
4
int
ncmdshow)
5
在入口函式中設定相關初始化,然後建立視窗,這樣一來,編譯執行即可顯示對應的視窗。
(注:這裡知識粗略提一下,具體的在duilib原始碼分析系列再具體說明)
實際上,經過上述操作後就已經可以顯示出介面效果了。但這裡,對第二步中關於xml檔案的載入額外補充說明一下。
cpaintmanagerui::視窗訊息及圖形繪製管理器類。
cdialogbuilder: 建立控制項類,分析指令碼並用遞迴方式(_parse函式)建立所有控制項例項。
在m_pm.attachdialog操作中,duilib中內部處理:
-> initcontrols (初始化控制項)-> findcontrol-> __findcontrolfromnamehash->pmanager->m_mnamehash.insert(把控制項插入到hash中)
至此,介面已經可以顯示出來了,而如何進行事件處理、訊息響應呢?在duilib學習筆記《05》中再具體說明…0
DUILib學習筆記 訊息處理
win32下視窗訊息迴圈 msg msg while getmessage msg,null,0,0 1.訊息迴圈,在cpaintmanagerui messageloop duilib中增加了乙個訊息預處理,類似mfc pretranslatemessage msg msg while getme...
Duilib學習筆記《07》 資源載入
duilib的介面表現力能如此豐富,很大程度上得益於貼圖描述的簡單強大。通過之前的學習及參看相關例子,我們可以發現,在xml布局檔案中,不管是窗體背景還是控制項,都新增了對應的資源以此來美化介面。而很多人在參看例子時發現有著多種新增資源方式,其實總結下來可以簡單概括為一下兩種 簡單模式 使用檔名作為...
Duilib學習筆記《03》 控制項使用
高階控制項 一些控制項的基本顯示效果就如同上面兩幅圖所示。實際上,在 duilib學習筆記 01 duilib整體框架認識中我們就已經提到過duilib這個庫的組成,其中就提到了控制項這部分,如下圖所示 對應到工程 中,實際上是分為了兩部分 core和control。core中包含的是所有控制項公用...