第9章和第10章


兩章的代碼: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】鈕被按下後的動作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章