溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

DirectUI 第一篇

發(fā)布時(shí)間:2020-07-08 22:03:21 來(lái)源:網(wǎng)絡(luò) 閱讀:782 作者:Nowind0121 欄目:開(kāi)發(fā)技術(shù)

 對(duì)于嵌入式開(kāi)發(fā),實(shí)現(xiàn)功能和界面分離太重要了,面對(duì)領(lǐng)導(dǎo)不同的更換UI,用DirectUI極為方便,具體用法如下:

   DirectUI 的很多例子都是用Win32寫(xiě)的,而對(duì)于我這種幾乎不用Win32 的人來(lái)說(shuō),還是想辦法把它改到MFC下吧,這樣一個(gè)過(guò)程是在創(chuàng)建MFC窗口之前,在CMFCAPPApp::InitInstance()中加入DirectUI::CPaintManagerUI::SetResourceInstance(CWinApp::m_hInstance);
 tString tstrSkin = CPaintManagerUI::GetInstancePath() + _T("skins\\360SafeSkin\\");
 DirectUI::CPaintManagerUI::SetSkinPath(tstrSkin.c_str());
獲取到你要解析的XML路徑,然后再CMFCAPPDlg::OnInitDialog()中,Create你要的窗口,而這個(gè)窗口就是你編寫(xiě)好的xml文件,利用UIDesigner可以方便快捷的寫(xiě)一個(gè)頁(yè)面出來(lái),解析配置文件就是在你的窗口中用Notify接收你的鼠標(biāo)或者鍵盤(pán)的消息響應(yīng),不能用MFC中的快捷方式去添加消息響應(yīng),因?yàn)镈irectUI 的使用基于WinCE,用MFC框架的話(huà)函數(shù)會(huì)在OnInitDialog()里面循環(huán),走不到類(lèi)似于OnMouseMove()這樣的函數(shù)中,另外MFC有自己的窗口,即使有觸發(fā)的機(jī)會(huì),也只是觸發(fā)MFC這個(gè)窗口的消息,與你XML寫(xiě)的窗口沒(méi)有任何關(guān)系,因此在用到DirectUI的時(shí)候,功能的實(shí)現(xiàn)就只能用Win32的HandleMessage()來(lái)處理消息的響應(yīng)了,這也是比較麻煩的,在實(shí)現(xiàn)OnMouseMove的時(shí)候,記得要在函數(shù)中把bHandle賦值為FALSE,因?yàn)槟阋WC在HandleMessage中要執(zhí)行MessageHandle函數(shù),讓CPaintManageUI通知視圖,這樣你點(diǎn)擊按鈕的時(shí)候才會(huì)有反應(yīng),否則只是觸發(fā)OnLButtonDown這一類(lèi)的函數(shù)。

    常見(jiàn)錯(cuò)誤:fatal error C1189: #error :  ERROR: Use of C runtime library internal header file.

    解決辦法:在用到sk_wince60這個(gè)庫(kù)時(shí),在該項(xiàng)目的Properties中,點(diǎn)擊C/C++,preprocessor,在該地址上寫(xiě)上     NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);STANDARDSHELL_UI_MODEL,就可以了,這對(duì)于Win32和MFC都是一樣的

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI