您好,登錄后才能下訂單哦!
這個基本的封裝控件類,基于WinCE的,所以他的入口自然是int APIENTRY WinMain,首先是Creat,創建窗口,封裝的類包括
1、SubClass 子類化窗口
2、ShowModal 窗口模態化
3、CPaintManagerUI 繪制管理者 這個類中封裝了很多UI的函數,比如GetClientSize,獲取工作區域的寬和高,MessageHandler寫了很多消息響應函數,對鼠標的操作, 等于自己重寫了幾乎所有的消息響應,另外很對地方用到了CControlUI
4、CControlUI 控件類
等等控件在原來MFC的基礎上封裝了,使用起來更加方便。
如何使用呢,我們需要建一個WinCE工程,比如建立一個像360一樣的頁面,我們寫好XML文件后,接下來就是如何去解析了,我們需要通過Create函數建立窗口,而在這個函數中我們要將寫好的XML文件解析出來
tString tstrSkin = CPaintManagerUI::GetSkinPath() + _T("skin.xml");
CControlUI* pRoot = builder.Create(tstrSkin.c_str(), (UINT)0, &cb, &m_pm);
ASSERT(pRoot && _T("Failed to parse XML"));
這樣就可以了,然后通過消息函數響應WM_CREATE、WM_CLOSE、WM_DESTROY、WM_NCPAINT、WM_GETMINMAXINFO(重載最小化函數)、WM_SIZE(窗口變化函數)、WM_SYSCOMMAND、WM_NCACTIVATE、WM_NCCALCSIZE、WM_NCHITTEST,這些函數可以幫助我們解析XML上的控件,實現消息的對應。
而在底層封裝的一些消息,我們通過 msg.sType == _T("click")的方式與之匹配,以下是封裝的消息
1、“click” 屬于CButtonUI類,Activate()函數,實現判斷按鈕是否活躍,如活躍則發送通知
2、“selectchanged” 屬于COptionUI類,Activate()函數,若復選框處于選中狀態,激活并發送通知
3、“link” 屬于CTextUI,Event()函數,若鼠標彈起,發送link通知
4、“valuechanged” 屬于CSliderUI,Event()函數,點擊滑塊彈起,發送通知
5、“textchanged”屬于CEditUI,SetText()函數,設置文本時發送通知
6、“itemselect”屬于CComboUI(組合控件),SelectItem()函數中響應WM_KEYDOWM,發送通知
7、“itemselect”又屬于ClistUI(列表控件),SelectItem()函數中,發送通知
8、“Headclick”屬于CListUI(列表控件),Event()函數中,鼠標按在列表頭的位置,發送通知
9、“itemactivate”屬于CListElementUI(列表元素),Activate()函數中,雙擊時發送通知
10、“itemclick”屬于CListLabelElementUI,Event()函數,單擊某一片區域,發送通知
11、“windowinit”屬于CPaintManageUI,WM_PAINT消息中,第一次繪制時發送通知
12、“setfocus”和“Killfocus”,屬于CPaintManageUI,獲取焦點和失去焦點
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。