簡單繪圖
本章介紹了MFC的消息映射機制,探討發(fā)送給窗口的消息是如何被MFC框架通過窗口句柄映射表和消息映射表來用窗口類的處理函數(shù)進行響應(yīng)的。討論設(shè)備描述表及其封裝類CDC的應(yīng)用,結(jié)合畫圖程序進行分析。
4.1消息映射機制
為視類添加一個鼠標左鍵按下的消息,在源文件中會添加3處代碼。
[DrawView.h]
1 protected:
2 //{{AFX_MSG(CDrawView)
3 afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
4 //}}AFX_MSG
5 DECLARE_MESSAGE_MAP()
此次為一個OnLButtonDown函數(shù)的聲明。
2. [DrawView.cpp]
1 BEGIN_MESSAGE_MAP(CDrawView, CView)
2 //{{AFX_MSG_MAP(CDrawView)
3 ON_WM_LBUTTONDOWN()
4 //}}AFX_MSG_MAP
5 END_MESSAGE_MAP()//消息映射表
此處為將一個鼠標左鍵按下的消息和一個消息響應(yīng)函數(shù)關(guān)聯(lián)起來。
3. [DrawView.cpp]
1 void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
2 {
3 // TODO: Add your message handler code here and/or call default
4 //MessageBox(“OK”);
5 CView::OnLButtonDown(nFlags, point);
6 }
OnLButtonDown函數(shù)實現(xiàn)。
MFC消息映射機制的具體實現(xiàn)方法是:在每個能接收和處理消息的類中(View,Frame.)定義了一個消息和消息靜態(tài)函數(shù)對照表,即消息映射表,在消息映射表中,消息與對應(yīng)的消息處理函數(shù)指針是成對出現(xiàn)的。某個類能處理所有消息及其對應(yīng)的消息處理函數(shù)的地址都列在這個對應(yīng)的靜態(tài)表中,當(dāng)有消息需要處理時,程序只需要搜索改消息靜態(tài)表,查看表中是否有改信息,就知道該類能否處理該消息,如果能,則通過靜態(tài)表找到與之對應(yīng)的消息處理函數(shù)。
在CDrawView類中,CDrawView對象相關(guān)一個窗口,當(dāng)然有它的窗口句柄,該句柄與CDrawView對象的一個指針CDrawView*存在一一對應(yīng)的關(guān)系。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |