青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

MFC消息映射機制的剖析(孫鑫VC++講座筆記-(4)轉(zhuǎn)載并修改)

一,消息映射機制

1,消息響應(yīng)函數(shù):(例:在CDrawView類響應(yīng)鼠標(biāo)左鍵按下消息)
1)在頭文件(DrawView.h)中聲明消息響應(yīng)函數(shù)原型。
//{{AFX_MSG(CDrawView) //注釋宏
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
//}}AFX_MSG //注釋宏
說明:
在注釋宏之間的聲明在VC中灰色顯示。afx_msg宏表示聲明的是一個消息響應(yīng)函數(shù)。

這個注釋宏為的是讓ClassWizard能夠分辨出哪些代碼是它生成的,哪些是你自己寫的。
你自己寫的代碼要在這個注釋之外,這樣ClassWizard再修改消息映射的時候就不會管你的代碼了。
限于以前的硬件速度,ClassWizard比較傻冒,所以需要這些注釋宏來定位。從7.0開始,就不再需
要了。新的屬性頁能夠自動分析你的代碼,為你添加或者刪除代碼,而無需什么特殊標(biāo)記的幫忙。
因此注釋宏已經(jīng)是歷史產(chǎn)物了。

2)在源文件(DrawView.cpp)中進行消息映射。
BEGIN_MESSAGE_MAP(CDrawView, CView)
//}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
說明:
在宏BEGIN_MESSAGE_MAP()與END_MESSAGE_MAP()之間進行消息映射。
宏ON_WM_LBUTTONDOWN()把消息WM_LBUTTONDOWN與它的響應(yīng)函數(shù)OnLButtonDown()相關(guān)聯(lián)。這樣一旦有消息的產(chǎn)生,就會自動調(diào)用相關(guān)聯(lián)的消息響應(yīng)函數(shù)去處理。
宏ON_WM_LBUTTONDOWN()定義如下:
#define ON_WM_LBUTTONDOWN()
{ WM_LBUTTONDOWN, 0, 0, 0, AfxSig_vwp,
(AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnLButtonDown },
3)源文件中進行消息響應(yīng)函數(shù)處理。(DrawView.cpp中自動生成OnLButtonDown函數(shù)輪廓,如下)
void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CView::OnLButtonDown(nFlags, point);
}
說明:
可見當(dāng)增加一個消息響應(yīng)處理,在以上三處進行了修改??稍谙㈨憫?yīng)函數(shù)里添加消息處理代碼完成對消息的響應(yīng)、處理。

2,消息響應(yīng)的方式:
1) 在基類中針對每種消息做一個虛函數(shù),當(dāng)子類對消息響應(yīng)時候,只要在子類中重寫這個虛函數(shù)即可。缺點:MFC類派生層次很多,如果在基類對每個消息進行虛函 數(shù)處理,那么從基類派生的每個子類都將背負一個龐大的虛表,這樣浪費內(nèi)存,故MFC沒有采取這中方式而采取消息映射方式。
2)消息映射方式: MFC在后臺維護了一個句柄和C++對象指針對照表,當(dāng)收到一個消息后,通過消息結(jié)構(gòu)里資源句柄(查對照表)就可找到與它對應(yīng)的一個C++對象指針,然后 把這個指針傳給基類,基類利用這個指針調(diào)用WindowProc()函數(shù)對消息進行處理,WindowProc()函數(shù)中調(diào)用OnWndMsg()函數(shù), 真正的消息路由及處理是由OnWndMsg()函數(shù)完成的。由于WindowProc()和OnWndMsg()都是虛函數(shù),而且是用派生類對象指針調(diào)用 的,由多態(tài)性知最總終調(diào)用子類的。在OnWndMsg()函數(shù)處理的時候,根據(jù)消息種類去查找消息映射,判斷所發(fā)的消息有沒有響應(yīng)函數(shù),具體方式是到相關(guān) 的頭文件和源文件中尋找消息響應(yīng)函數(shù)聲明(從注釋宏//}AFX_MSG之間尋找),消息映射(從宏BEGIN_MESSAGE_MAP(...)....END_MESSAGE_MAP()之間尋找),最終找到對應(yīng)的消息處理函數(shù)。當(dāng)然,如果子類中沒有對消息進行處理,則消息交由基類處理。
說明:
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);

posted on 2007-03-02 09:58 王光平 閱讀(934) 評論(0)  編輯 收藏 引用 所屬分類: 編程技術(shù)

<2007年3月>
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567

導(dǎo)航

統(tǒng)計

留言簿(4)

隨筆分類

隨筆檔案

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久视频一区| 国产美女扒开尿口久久久| 久久爱另类一区二区小说| 欧美成人情趣视频| 国产精品视频免费在线观看| 一区二区高清视频| 久久在线视频| 亚洲综合日韩在线| 一区二区视频免费在线观看| 免费在线欧美视频| 久久国产乱子精品免费女| 亚洲三级影院| 欧美激情亚洲另类| 91久久精品国产91性色| 一区二区免费在线视频| 国产精品高潮呻吟久久av无限| 久久久久国内| 久久精品视频在线观看| 性欧美激情精品| 午夜欧美大片免费观看| 亚洲一区三区在线观看| 亚洲精品美女久久久久| 欧美成人精品1314www| 久久精品亚洲精品| 久久久亚洲一区| 久久久亚洲影院你懂的| 久久国产精品久久精品国产| 香蕉久久夜色精品国产| 久久精品99国产精品酒店日本| 欧美一级黄色网| 麻豆精品91| 亚洲人成在线影院| 精品二区久久| 亚洲精品乱码久久久久久蜜桃麻豆 | 久久一区中文字幕| 亚洲欧美日韩成人高清在线一区| 欧美日韩国产综合视频在线| 欧美性一区二区| 国产一二三精品| 一区二区三区精密机械公司| 久久久久在线| 一区二区三区黄色| 美日韩精品视频免费看| 国产麻豆综合| 亚洲精品一区二区网址| 欧美h视频在线| 午夜精品久久久久久久男人的天堂| 久久中文字幕导航| 国内综合精品午夜久久资源| 亚洲一区二区视频在线观看| 免费在线观看日韩欧美| 欧美在线免费看| 国产精品久久久久三级| 国产精品一区二区在线观看网站| 国产精品福利久久久| 国产精品视频最多的网站| 欧美日本高清视频| 亚洲一区国产一区| 亚洲欧美日韩直播| 一本久久综合亚洲鲁鲁| 亚洲国产成人在线| 欧美日韩p片| 亚洲精品1区2区| 亚洲精品网站在线播放gif| 欧美日韩在线精品| 午夜欧美大片免费观看| 亚洲欧美一区二区三区极速播放| 国产美女精品视频| 欧美国产日韩一区二区| 国产婷婷一区二区| 久久福利一区| 蜜桃av一区二区三区| 99在线|亚洲一区二区| 亚洲免费综合| 午夜久久99| 欧美在线一区二区| 欧美午夜不卡在线观看免费| 国产午夜精品久久久| aa亚洲婷婷| 久久最新视频| 亚洲午夜激情免费视频| 欧美午夜一区二区三区免费大片 | 模特精品裸拍一区| 欧美激情一区二区三区蜜桃视频 | 久久五月天婷婷| 欧美中文字幕不卡| 亚洲午夜久久久久久尤物| 在线视频欧美日韩精品| 在线看片第一页欧美| 欧美一区二区三区男人的天堂| 日韩一级成人av| 久久综合五月天婷婷伊人| 久久中文字幕一区| 亚洲日本视频| 美国十次成人| aa亚洲婷婷| 99综合在线| 欧美高清视频一区二区三区在线观看| 亚洲欧美日韩综合aⅴ视频| 欧美激情亚洲| 99精品免费视频| 欧美福利电影在线观看| 亚洲精品日韩激情在线电影| 国产欧美精品在线观看| 久久夜色撩人精品| 六十路精品视频| 亚洲国产精品电影| 中日韩男男gay无套| 国产精品成人播放| 久久精品欧美日韩精品| 亚洲一区二区三区久久| 亚洲高清影视| 欧美在线观看你懂的| 国产精品视频网址| 久久精品国产99精品国产亚洲性色 | 亚洲电影第三页| 欧美久久一区| 欧美一区激情视频在线观看| 久久免费少妇高潮久久精品99| 国产三级欧美三级日产三级99| 欧美日韩另类字幕中文| 欧美日韩国产在线看| 欧美日韩一卡二卡| 欧美视频在线免费| 欧美日韩综合在线| 午夜精品久久久久久久久| 激情六月综合| 欧美视频成人| 国产精品高潮呻吟| 欧美日韩中国免费专区在线看| 欧美日韩一本到| 国产精品看片资源| 一本到12不卡视频在线dvd| 亚洲高清视频一区| 在线观看亚洲视频| 精品999日本| 一区二区三区国产在线| 亚洲欧美在线免费观看| 美女免费视频一区| 亚洲一区二区高清| 亚洲欧美另类在线观看| 午夜欧美不卡精品aaaaa| 亚洲专区在线| 老司机免费视频一区二区三区| 欧美精品亚洲精品| 国产精品高潮呻吟久久av黑人| 亚洲国产经典视频| 免费成人av在线| 9i看片成人免费高清| 久久久精品一区| 国产精品成人午夜| 夜夜夜精品看看| 亚洲精选一区二区| 蜜桃伊人久久| 99精品国产福利在线观看免费| 亚洲视频欧美视频| 欧美在线一二三区| 亚洲精品视频在线观看免费| 老司机成人网| 亚洲精品久久视频| 久久久综合网站| 亚洲婷婷综合色高清在线| 久久riav二区三区| 国产日韩欧美成人| 久久精品99久久香蕉国产色戒| 亚洲看片免费| 国产精品伊人日日| 欧美体内谢she精2性欧美 | 国产精品99久久久久久人| 欧美在线|欧美| 中国女人久久久| 国产欧美亚洲一区| 久久九九精品99国产精品| 欧美在线视频播放| 最新国产成人在线观看| 欧美粗暴jizz性欧美20| 午夜亚洲视频| 亚洲国产精品久久久久婷婷老年| 久久久之久亚州精品露出| 久久精品最新地址| 亚洲黄色在线看| 亚洲欧美在线观看| 一本色道久久综合| 午夜免费在线观看精品视频| 国产精品视频xxxx| 美腿丝袜亚洲色图| 国产精品看片你懂得| 老司机午夜免费精品视频| 欧美三级在线视频| 欧美资源在线观看| 久久久99精品免费观看不卡| 亚洲精品久久久久久久久| 亚洲男人第一网站| 亚洲一区二三| 欧美午夜激情小视频| 久久电影一区| 欧美电影在线免费观看网站| 久久精品国产一区二区三区免费看 | 夜夜嗨av一区二区三区四区| 欧美一区二粉嫩精品国产一线天|