欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Visual C++中MFC消息的分類(lèi)

 更新時(shí)間:2012年11月12日 11:47:50   作者:  
標(biāo)準(zhǔn)(窗口)消息:窗口消息一般與窗口內(nèi)部運(yùn)作有關(guān),如創(chuàng)建窗口,繪制窗口,銷(xiāo)毀窗口,通常,消息是從系統(tǒng)發(fā)到窗口,或從窗口發(fā)到系統(tǒng)
標(biāo)準(zhǔn)(窗口)消息:窗口消息一般與窗口內(nèi)部運(yùn)作有關(guān),如創(chuàng)建窗口,繪制窗口,銷(xiāo)毀窗口,通常,消息是從系統(tǒng)發(fā)到窗口,或從窗口發(fā)到系統(tǒng)。發(fā)送函數(shù)SendMessage()或者PostMessage()。除WM_COMMAND之外,所有的以WM_開(kāi)頭的消息。從CWnd派生的類(lèi),都可以接受到這類(lèi)消息。注意:標(biāo)準(zhǔn)消息并不需要我們指定處理函數(shù)名稱(chēng),是默認(rèn)的對(duì)應(yīng)關(guān)系。

宏名稱(chēng) 對(duì)應(yīng)消息 消息處理函數(shù)
ON_WM_CHAR WM_CHAR OnChar
ON_WM_CLOSE WM_CLOSE OnClose
ON_WM_CREATE WM_CREATE OnCreate
ON_WM_DESTROY WM_DESTROY OnDestroy
ON_WM_LBUTTONDO WNWM_LBUTTONDOWN OnLButtonDown
ON_WM_LBUTTONUP WM_LBUTTONUP OnLButtonUp
ON_WM_MOUSEMOVE WM_MOUSEMOVE OnMouseMove
ON_WM_PAINTWM_PAINT OnPaint

命令消息:命令消息通常與處理用戶(hù)請(qǐng)求有關(guān),當(dāng)用戶(hù)單擊一個(gè)菜單或工具欄時(shí),命令消息就產(chǎn)生了。并發(fā)送到能處理該消息的類(lèi)或函數(shù)(如裝載文本,保存選項(xiàng)等)這類(lèi)消息都以WM_COMMAND呈現(xiàn)。在MFC中,通過(guò)菜單標(biāo)識(shí)(ID)來(lái)區(qū)分不同的命令消息;在SDK中,通過(guò)消息的wParam參數(shù)識(shí)別。從CCmdTarget派生的類(lèi),都可以接收到這類(lèi)消息,其wParam 記錄著該消息來(lái)自哪一個(gè)菜單項(xiàng)目。

ON_COMMAND(IDM_ABOUT, OnAbout)
ON_COMMAND(IDM_FILENEW, OnFileNew)
ON_COMMAND(IDM_FILEOPEN, OnFileOpen)
ON_COMMAND(IDM_FILESAVE, OnFileSave)

控件消息:由控件產(chǎn)生的消息,例如,按鈕的單擊,列表框的選擇等均產(chǎn)生此類(lèi)消息,為的是向其父窗口通(通常是對(duì)話框)通知事件的發(fā)生。這類(lèi)消息也是以WM_COMMAND形式呈現(xiàn)。從CCmdTarget派生的類(lèi)都可以接收到這類(lèi)消息。

控件宏 消息處理函數(shù)
Button ON_BN_CLICKED(<id>,<memberFxn>) memberFxn
ComboBox ON_CBN_DBLCLK(<id>,<memberFxn>) memberFxn
Edit ON_EN_SETFOCUS(<id>,<memberFxn>) memberFxn
ListBox ON_LBN_DBLCLK(<id>,<memberFxn>) memberFxn

CWnd是CCmdTarget的派生類(lèi),在MFC的單文檔程序中的CMenuApp和CMenuDoc都是屬于CCmdTarget的派生類(lèi)而不包含CWnd類(lèi)。

MFC命令消息的路由:AfxWndProc(替換了窗口過(guò)程函數(shù))->AfxCallWndProc->WindowProc->OnWnddMsg->(如果是命令消息則調(diào)用Oncommand;如果是通告消息則調(diào)用OnNotify)->OnCmdMsg
標(biāo)準(zhǔn)消息和非標(biāo)準(zhǔn)消息的區(qū)分:標(biāo)準(zhǔn)消息:帶有控制后 后續(xù)操作;非標(biāo)準(zhǔn)消息:只是簡(jiǎn)單提示。

你可以在程序的許多類(lèi)別之中設(shè)計(jì)「消息映像表格」(每一個(gè)類(lèi)別只能擁有一個(gè)消息映像表格,但也可以沒(méi)有),接收并處理消息。只要是 CWnd 衍生類(lèi)別,就可以攔下任何 Windows 消息。與窗口無(wú)關(guān)的MFC 類(lèi)別(例如 CDocument 和 CWinApp)如果也想處理消息,必須衍生自 CCmdTarget,并且只可能收到 WM_COMMAND 命令消息。

相關(guān)文章

最新評(píng)論