第三章 控件(6~7課)
第6課:創建和使用控件
第7課:常用控件
概述:
在MFC中,控件是具有獨立功能的人機交互的小窗口,它們除了可以使用自身成員外,還可使用其基類CWnd類的公有成員,因為幾乎所有的控件類都是從CWnd類派生而來的。
正因為如此,當用控件類的Create創建控件時,除了自身的樣式預定義標識外,還有窗口通用的樣式預定義標識。
當對話框資源創建對話框類後,控件只能以成員的方式出現在對話框類中。
控件變量:
用MFC ClassWizard可為控件在對話框類中創建兩種類別的成員變量:其一是控制類,即創建的是控件類對象;其二是數據類,即創建的是控件數據變量(我認為是控件變量)。這兩種類別的成員在對話框類中只能各有一個
消息:
不同控件的“通知消息”有所不同,總體可分為三類:其一是與界面相關的單擊、選擇與取消或展開與收縮等的命令消息;其二是與輸入焦點相關的失去、得到等消息;其三是與數據相關的更新、改變等消息。這些消息,系統都會用一個稱為MSG結構的系統變量來記錄,並可用MFC ClassWizard對話框對其進行映射。
即控件不僅僅在對話框類中使用控件變量操作,還可通過控件的消息映射來實現代碼功能。
美觀:
MFC的控件更註重於控件的程序控制,而VB的控件更註重於控件的界面設計。
事實上,MFC的控件也可進行更深入的界面設計,包括兩種層次不同的方法:其一是使用“自畫”(Owner Draw,所有者繪制)體系;其二是跟蹤消息。
對於“自畫”體系,它可通過重載DrawItem函數來達到目的,但這種方法暫時較難。
跟蹤消息是一個簡單可行的方法。在前面的“調整對話框背景顏色”示例中,用到了WM_CTLCOLOR消息,這個消息是當對話框及控件等在顯示之前向父窗口發生的消息,通過跟蹤這個消息,在WM_CTLCOLOR消息函數OnCtrlColor返回之前,指定返回一個HBRUSH,系統就會用它繪制控件
彩蛋:
由上可知,在界面設計中,對話框是一種常用的模板,它包含了許多控件等界面元素。
實際上,在文檔應用程序中,除了對話框外,還有菜單、工具欄和狀態欄等界面模板,下一章將討論這些模板。
第三章 控件(6~7課)