兩章的代碼:http://download.csdn.net/detail/caidaoqq/6951975點擊打開鏈接
第九章:消息映射與命令繞行
1.MFC把消息分爲三大類:
■ 命令消息(WM_COMMAND):命令消息意味着「使用者命令程序做某些動作」。
凡由UI 對象產生的消息都是這種命令消息,可能來自菜單或加速鍵或工具欄按鈕,並且都以WM_COMMAND 呈現。如何分辨來自各處的命令消息?SDK程序主要靠消息的wParam 辨識之,MFC 程序則主要靠菜單項目的識別碼(menu ID)辨識之-- 兩者其實是相同的。
凡衍生自CCmdTarget 者,它的骨子裏就有了一種特殊的機制。可接受WM_COMMAND消息;
■ 標準消息- 除WM_COMMAND 之外,任何以WM_ 開頭的都算是這一類。任何
衍生自CWnd 之類別,均可接收此消息。
■ Control Notification -這種消息由控制組件產生,爲的是向其父窗口(通常是對框)通知某種情況。
2.命令消息必須有一個對應的處理函數,把消息和其處理函數「綁」在一塊兒,這動作稱爲CommandBinding,這個動作將由一堆宏完成。
3.三個奇怪的宏,一張巨大的網
Message Map 既可說是一套宏,也可以說是宏展開後所代表的一套數據結構;甚至也可以說Message Map 是一種動作,這個動作,就是在剛剛所提的資料結構中尋找與消息相吻合的項目,從而獲得消息的處理例程的函數指針。
1. 消息分類的原因:因爲它們的上溯路徑不是那麼單純地只往父類別去,它們可能需要拐個彎。
2.
第10章MFC與對話框
1. 設計對話框模板,有兩個重要的步驟,第一是從工具箱中選擇控制組件(control,功能
各異的小小零組件)加到對話框中,第二是填寫此一控制組件的標題、ID、以及其它性
質。
2. 利用ClassWizard 連接對話框與其專屬類別
a. 從MFC 的CDialog 中衍生出一個類別,用來負責對話框行爲。
b. 利用ClassWizard 把這個類別和先前你產生的對話框資源連接起來。通常這意
味着你必須聲明某些函數,用以處理你感興趣的對話框消息,並將對話框中的
控制組件對應到類別的成員變量上,這也就是所謂的DialogData eXchange
(DDX)。如果你對這些變量內容有任何「確認規則」的話,ClassWizard 也
允許你設定之,這就是所謂的Dialog DataValidation(DDV)。
3. 對話框的消息處理函數
a. 在CPenWidthsDlg 中增加兩個變量,分別代表粗筆與細筆的寬度。
b. 在CPenWidthsDlg 中增加一個函數,負責【Default】鈕被按下後的動作