Visual C++中MFC消息的分類
更新時間:2012年11月12日 11:47:50 作者:
標(biāo)準(zhǔn)(窗口)消息:窗口消息一般與窗口內(nèi)部運作有關(guān),如創(chuàng)建窗口,繪制窗口,銷毀窗口,通常,消息是從系統(tǒng)發(fā)到窗口,或從窗口發(fā)到系統(tǒng)
標(biāo)準(zhǔn)(窗口)消息:窗口消息一般與窗口內(nèi)部運作有關(guān),如創(chuàng)建窗口,繪制窗口,銷毀窗口,通常,消息是從系統(tǒng)發(fā)到窗口,或從窗口發(fā)到系統(tǒng)。發(fā)送函數(shù)SendMessage()或者PostMessage()。除WM_COMMAND之外,所有的以WM_開頭的消息。從CWnd派生的類,都可以接受到這類消息。注意:標(biāo)準(zhǔn)消息并不需要我們指定處理函數(shù)名稱,是默認的對應(yīng)關(guān)系。
宏名稱 對應(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
命令消息:命令消息通常與處理用戶請求有關(guān),當(dāng)用戶單擊一個菜單或工具欄時,命令消息就產(chǎn)生了。并發(fā)送到能處理該消息的類或函數(shù)(如裝載文本,保存選項等)這類消息都以WM_COMMAND呈現(xiàn)。在MFC中,通過菜單標(biāo)識(ID)來區(qū)分不同的命令消息;在SDK中,通過消息的wParam參數(shù)識別。從CCmdTarget派生的類,都可以接收到這類消息,其wParam 記錄著該消息來自哪一個菜單項目。
ON_COMMAND(IDM_ABOUT, OnAbout)
ON_COMMAND(IDM_FILENEW, OnFileNew)
ON_COMMAND(IDM_FILEOPEN, OnFileOpen)
ON_COMMAND(IDM_FILESAVE, OnFileSave)
控件消息:由控件產(chǎn)生的消息,例如,按鈕的單擊,列表框的選擇等均產(chǎn)生此類消息,為的是向其父窗口通(通常是對話框)通知事件的發(fā)生。這類消息也是以WM_COMMAND形式呈現(xiàn)。從CCmdTarget派生的類都可以接收到這類消息。
控件宏 消息處理函數(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的派生類,在MFC的單文檔程序中的CMenuApp和CMenuDoc都是屬于CCmdTarget的派生類而不包含CWnd類。
MFC命令消息的路由:AfxWndProc(替換了窗口過程函數(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)消息:只是簡單提示。
你可以在程序的許多類別之中設(shè)計「消息映像表格」(每一個類別只能擁有一個消息映像表格,但也可以沒有),接收并處理消息。只要是 CWnd 衍生類別,就可以攔下任何 Windows 消息。與窗口無關(guān)的MFC 類別(例如 CDocument 和 CWinApp)如果也想處理消息,必須衍生自 CCmdTarget,并且只可能收到 WM_COMMAND 命令消息。
宏名稱 對應(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
命令消息:命令消息通常與處理用戶請求有關(guān),當(dāng)用戶單擊一個菜單或工具欄時,命令消息就產(chǎn)生了。并發(fā)送到能處理該消息的類或函數(shù)(如裝載文本,保存選項等)這類消息都以WM_COMMAND呈現(xiàn)。在MFC中,通過菜單標(biāo)識(ID)來區(qū)分不同的命令消息;在SDK中,通過消息的wParam參數(shù)識別。從CCmdTarget派生的類,都可以接收到這類消息,其wParam 記錄著該消息來自哪一個菜單項目。
ON_COMMAND(IDM_ABOUT, OnAbout)
ON_COMMAND(IDM_FILENEW, OnFileNew)
ON_COMMAND(IDM_FILEOPEN, OnFileOpen)
ON_COMMAND(IDM_FILESAVE, OnFileSave)
控件消息:由控件產(chǎn)生的消息,例如,按鈕的單擊,列表框的選擇等均產(chǎn)生此類消息,為的是向其父窗口通(通常是對話框)通知事件的發(fā)生。這類消息也是以WM_COMMAND形式呈現(xiàn)。從CCmdTarget派生的類都可以接收到這類消息。
控件宏 消息處理函數(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的派生類,在MFC的單文檔程序中的CMenuApp和CMenuDoc都是屬于CCmdTarget的派生類而不包含CWnd類。
MFC命令消息的路由:AfxWndProc(替換了窗口過程函數(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)消息:只是簡單提示。
你可以在程序的許多類別之中設(shè)計「消息映像表格」(每一個類別只能擁有一個消息映像表格,但也可以沒有),接收并處理消息。只要是 CWnd 衍生類別,就可以攔下任何 Windows 消息。與窗口無關(guān)的MFC 類別(例如 CDocument 和 CWinApp)如果也想處理消息,必須衍生自 CCmdTarget,并且只可能收到 WM_COMMAND 命令消息。
相關(guān)文章
Qt中正則表達式的常見用法(QRegularExpression類)
正則表達式即一個文本匹配字符串的一種模式,Qt中使用QRegExp類進行模式匹配,下面這篇文章主要給大家介紹了關(guān)于Qt中正則表達式的常見用法,文中介紹的是QRegularExpression類的相關(guān)資料,需要的朋友可以參考下2024-05-05
C++高級數(shù)據(jù)結(jié)構(gòu)之線段樹
這篇文章主要介紹了C++高級數(shù)據(jù)結(jié)構(gòu)之線段樹,文章圍繞主題的相關(guān)資料展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-05-05
C/C++中memset,memcpy的使用及fill對數(shù)組的操作
這篇文章主要介紹了C/C++中memset,memcpy的使用及fill對數(shù)組的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
C++賦值函數(shù)+移動賦值函數(shù)+移動構(gòu)造函數(shù)詳解
這篇文章主要介紹了C++賦值函數(shù)+移動賦值函數(shù)+移動構(gòu)造函數(shù)詳解,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08
C語言數(shù)據(jù)結(jié)構(gòu)之學(xué)生信息管理系統(tǒng)課程設(shè)計
這篇文章主要為大家詳細介紹了C語言數(shù)據(jù)結(jié)構(gòu)之學(xué)生信息管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11
輸入一個字符串,取出其中的整數(shù)(實現(xiàn)代碼)
輸入一個字符串,內(nèi)含所有數(shù)字和非數(shù)字字符。將其中連續(xù)的數(shù)字作為一個整數(shù),依次存放到一個數(shù)組中,統(tǒng)計共有多少個整數(shù),并輸出這些數(shù)2013-09-09

