您好,登錄后才能下訂單哦!
對于嵌入式開發,實現功能和界面分離太重要了,面對領導不同的更換UI,用DirectUI極為方便,具體用法如下:
DirectUI 的很多例子都是用Win32寫的,而對于我這種幾乎不用Win32 的人來說,還是想辦法把它改到MFC下吧,這樣一個過程是在創建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你要的窗口,而這個窗口就是你編寫好的xml文件,利用UIDesigner可以方便快捷的寫一個頁面出來,解析配置文件就是在你的窗口中用Notify接收你的鼠標或者鍵盤的消息響應,不能用MFC中的快捷方式去添加消息響應,因為DirectUI 的使用基于WinCE,用MFC框架的話函數會在OnInitDialog()里面循環,走不到類似于OnMouseMove()這樣的函數中,另外MFC有自己的窗口,即使有觸發的機會,也只是觸發MFC這個窗口的消息,與你XML寫的窗口沒有任何關系,因此在用到DirectUI的時候,功能的實現就只能用Win32的HandleMessage()來處理消息的響應了,這也是比較麻煩的,在實現OnMouseMove的時候,記得要在函數中把bHandle賦值為FALSE,因為你要保證在HandleMessage中要執行MessageHandle函數,讓CPaintManageUI通知視圖,這樣你點擊按鈕的時候才會有反應,否則只是觸發OnLButtonDown這一類的函數。
常見錯誤:fatal error C1189: #error : ERROR: Use of C runtime library internal header file.
解決辦法:在用到sk_wince60這個庫時,在該項目的Properties中,點擊C/C++,preprocessor,在該地址上寫上 NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);STANDARDSHELL_UI_MODEL,就可以了,這對于Win32和MFC都是一樣的
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。