基于DirectUI搭建Windows窗体程序
使用DirectUI需要directuiCom.dll,包含IDirectUI.h和DirectuiDef.h。在你的應(yīng)用程序中初始化CLSID_DirectUI,并獲取IDirectUI(IID_IDirectUI)接口。具體初始化方式可以參考官網(wǎng)示例。DirectUI的界面定義分為xml + script。xml定義界面的布局、樣式、資源。script文件定義相關(guān)消息的映射處理,并通過(guò)Window.OnSkinCmd轉(zhuǎn)發(fā)相應(yīng)的消息到指定的函數(shù)。假設(shè)這里你使用的技術(shù)是ATL,DirectUI定義了WM_SKIN_COMMAND消息,你可以添加對(duì)應(yīng)的MESSAGE_HANDLER:
MESSAGE_HANDLER(WM_SKIN_COMMAND, OnSkinCommand)在OnSkinCommand的時(shí)候轉(zhuǎn)發(fā)由script中通過(guò)OnSkinCmd發(fā)送的消息:
1 LRESULT OnSkinCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { 2 SendMessage(WM_COMMAND, wParam, lParam); 3 4 return 0; 5 }假設(shè)在你對(duì)應(yīng)的xml中有一個(gè)button按鈕,在script中添加了對(duì)應(yīng)的處理函數(shù):
1 function btnClick::onClick(cx, cy) { 2 Window.OnSkinCmd(100, 0); 3 }在你的任意頭文件中定義btnClick的標(biāo)識(shí),比如:
#define IDC_BTNCLICK 100在消息映射中添加一個(gè)COMMAND_ID_HANDLER:
COMMAND_ID_HANDLER(IDC_BTNCLICK, OnBtnClickClick)這樣你原來(lái)基于ATL編寫(xiě)的消息處理器依然可以被繼續(xù)使用,而UI的技術(shù)就可以嘗試使用DirectUI。
總結(jié)
以上是生活随笔為你收集整理的基于DirectUI搭建Windows窗体程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 图像领域深度学习的七个境界
- 下一篇: MATLAB读取文件夹中所有图像