原文在这里:http://blog.csdn.net/skywalker_leo/article/details/8229322
MFC把消息主要分为三大类:
1. 标准Windows消息(WM_XXX)
2. 命令消息(WM_COMMAND):凡由UI对象产生的消息都是这种命令消息,可能来自菜单或加速键或工具栏按钮。
3. 控件Notification消息
下面是各种消息的消息映射及对应处理函数原型:
消息映射 | 对应处理函数原型 |
ON_COMMAND(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_COMMAND_EX(<id>, <memberFxn>) | afx_msg BOOL memberFxn(UINT); |
ON_COMMAND_EX_RANGE(<id>, <idLast>, <memberFxn>) | afx_msg BOOL memberFxn(UINT); |
ON_COMMAND_RANGE(<id>, <idLast>, <memberFxn>) | afx_msg void memberFxn(UINT); |
ON_UPDATE_COMMAND_UI(<id>, <memberFxn>) | afx_msg void memberFxn(CCmdUI*); |
ON_UPDATE_COMMAND_UI_RANGE (<id>, <idLast>, <memberFxn>) | afx_msg void memberFxn(CCmdUI*); |
ON_UPDATE_COMMAND_UI_REFLECT (<memberFxn>) | afx_msg void memberFxn(CCmdUI*); |
子窗口控件"Notification消息"消息与处理对应规则:
Generic ControlNotification Codes
消息映射 | 对应处理函数原型 |
ON_CONTROL(<wNotifyCode>, <id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_CONTROL_RANGE(<wNotifyCode>, <id> <idLast>, <memberFxn>) | afx_msg void memberFxn(UINT); |
ON_CONTROL_REFLECT(<wNotifyCode>, <memberFxn>) | afx_msg void memberFxn(); |
ON_CONTROL_REFLECT_EX(<wNotifyCode>, <memberFxn>) | afx_msg BOOL memberFxn(); |
ON_NOTIFY(<wNotifyCode>, <id>, <memberFxn>) | afx_msg void memberFxn(NMHDR*, LRESULT*); |
ON_NOTIFY_EX(<wNotifyCode>, <id>, <memberFxn>) | afx_msg BOOL memberFxn(UINT, NMHDR*, LRESULT*); |
ON_NOTIFY_EX_RANGE(<wNotifyCode>, <id>, <idLast>, <memberFxn>) | afx_msg BOOL memberFxn(UINT, NMHDR*, LRESULT*); |
ON_NOTIFY_RANGE(<wNotifyCode>, <id>, <idLast>, <memberFxn>) | afx_msg void memberFxn(UINT, NMHDR*, LRESULT*); |
ON_NOTIFY_REFLECT(<wNotifyCode>, <memberFxn>) | afx_msg void memberFxn(NMHDR*, LRESULT*); |
ON_NOTIFY_REFLECT_EX(<wNotifyCode>, <memberFxn>) | afx_msg BOOL memberFxn(NMHDR*, LRESULT*); |
User ButtonNotification Codes
消息映射 | 对应处理函数原型 |
ON_BN_CLICKED(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_BN_DOUBLECLICKED(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_BN_KILLFOCUS(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_BN_SETFOCUS(<id>, <memberFxn>) | afx_msg void memberFxn(); |
Combo Box NotificationCodes
消息映射 | 对应处理函数原型 |
ON_CBN_CLOSEUP(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_CBN_DBLCLK(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_CBN_DROPDOWN(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_CBN_EDITCHANGE(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_CBN_EDITUPDATE(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_CBN_ERRSPACE(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_CBN_KILLFOCUS(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_CBN_SELCHANGE(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_CBN_SELENDCANCEL(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_CBN_SELENDOK(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_CBN_SETFOCUS(<id>, <memberFxn>) | afx_msg void memberFxn(); |
Check List BoxNotification Codes
消息映射 | 对应处理函数原型 |
ON_CLBN_CHKCHANGE(<id>, <memberFxn>) | afx_msg void memberFxn(); |
Edit ControlNotification Codes
消息映射 | 对应处理函数原型 |
ON_EN_CHANGE(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_EN_ERRSPACE(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_EN_HSCROLL(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_EN_KILLFOCUS(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_EN_MAXTEXT(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_EN_SETFOCUS(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_EN_UPDATE(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_EN_VSCROLL(<id>, <memberFxn>) | afx_msg void memberFxn(); |
List Box NotificationCodes
消息映射 | 对应处理函数原型 |
ON_LBN_DBLCLK(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_LBN_ERRSPACE(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_LBN_KILLFOCUS(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_LBN_SELCANCEL(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_LBN_SELCHANGE(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_LBN_SETFOCUS(<id>, <memberFxn>) | afx_msg void memberFxn(); |
Static Control Notification Codes
消息映射 | 对应处理函数原型 |
ON_STN_CLICKED(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_STN_DBLCLK(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_STN_DISABLE(<id>, <memberFxn>) | afx_msg void memberFxn(); |
ON_STN_ENABLE(<id>, <memberFxn>) | afx_msg void memberFxn(); |
标准Windows消息( WM_xxx )的对应规则:
对应处理函数原型 | |
ON_WM_ACTIVATE() | afx_msg void OnActivate(UINT, CWnd*, BOOL); |
ON_WM_ACTIVATEAPP() | afx_msg void OnActivateApp(BOOL, HTASK); |
ON_WM_ASKCBFORMATNAME() | afx_msg void OnAskCbFormatName(UINT, LPTSTR); |
ON_WM_CANCELMODE() | afx_msg void OnCancelMode(); |
ON_WM_CAPTURECHANGED() | afx_msg void OnCaptureChanged(CWnd*); |
ON_WM_CHANGECBCHAIN() | afx_msg void OnChangeCbChain(HWND, HWND); |
ON_WM_CHAR() | afx_msg void OnChar(UINT, UINT, UINT); |
ON_WM_CHARTOITEM() | afx_msg int OnCharToItem(UINT, CListBox*, UINT); |
ON_WM_CHARTOITEM_REFLECT() | afx_msg int CharToItem(UINT, UINT); |
ON_WM_CHILDACTIVATE() | afx_msg void OnChildActivate(); |
ON_WM_CLOSE() | afx_msg void OnClose(); |
ON_WM_COMPACTING() | afx_msg void OnCompacting(UINT); |
ON_WM_COMPAREITEM() | afx_msg int OnCompareItem(int, LPCOMPAREITEMSTRUCT); |
ON_WM_COMPAREITEM_REFLECT() | afx_msg int CompareItem (LPCOMPAREITEMSTRUCT); |
ON_WM_CONTEXTMENU() | afx_msg void OnContextMenu(CWnd*, CPoint); |
ON_WM_COPYDATA() | afx_msg BOOL OnCopyData(CWnd*, COPYDATASTRUCT*); |
ON_WM_CREATE() | afx_msg int OnCreate(LPCREATESTRUCT); |
ON_WM_CTLCOLOR() | afx_msg HBRUSH OnCtlColor(CDC*, CWnd*, UINT); |
ON_WM_CTLCOLOR_REFLECT() | afx_msg HBRUSH CtlColor(CDC*, UINT); |
ON_WM_DEADCHAR() | afx_msg void OnDeadChar(UINT, UINT, UINT); |
ON_WM_DELETEITEM() | afx_msg void OnDeleteItem(int, LPDELETEITEMSTRUCT); |
ON_WM_DELETEITEM_REFLECT() | afx_msg void DeleteItem (LPDELETEITEMSTRUCT) |
ON_WM_DESTROY() | afx_msg void OnDestroy(); |
ON_WM_DESTROYCLIPBOARD() | afx_msg void OnDestroyClipboard(); |
ON_WM_DEVICECHANGE() | afx_msg BOOL OnDeviceChange(UINT, DWORD); |
ON_WM_DEVMODECHANGE() | afx_msg void OnDevModeChange(LPTSTR); |
ON_WM_DRAWCLIPBOARD() | afx_msg void OnDrawClipboard(); |
ON_WM_DRAWITEM() | afx_msg void OnDrawItem(int, LPDRAWITEMSTRUCT); |
ON_WM_DRAWITEM_REFLECT() | afx_msg void DrawItem (LPDRAWITEMSTRUCT); |
ON_WM_DROPFILES() | afx_msg void OnDropFiles(HDROP); |
ON_WM_ENABLE() | afx_msg void OnEnable(BOOL); |
ON_WM_ENDSESSION() | afx_msg void OnEndSession(BOOL); |
ON_WM_ENTERIDLE() | afx_msg void OnEnterIdle(UINT, CWnd*); |
ON_WM_ENTERMENULOOP() | afx_msg void OnEnterMenuLoop(BOOL); |
ON_WM_ERASEBKGND() | afx_msg BOOL OnEraseBkgnd(CDC*); |
ON_WM_EXITMENULOOP() | afx_msg void OnExitMenuLoop(BOOL); |
ON_WM_FONTCHANGE() | afx_msg void OnFontChange(); |
ON_WM_GETDLGCODE() | afx_msg UINT OnGetDlgCode(); |
ON_WM_GETMINMAXINFO() | afx_msg void OnGetMinMaxInfo (MINMAXINFO*); |
ON_WM_HELPINFO() | afx_msg BOOL OnHelpInfo(HELPINFO*); |
ON_WM_HSCROLL() | afx_msg void OnHScroll(UINT, UINT, CScrollBar*); |
ON_WM_HSCROLL_REFLECT() | afx_msg void HScroll(UINT, UINT); |
ON_WM_HSCROLLCLIPBOARD() | afx_msg void OnHScrollClipboard(CWnd*, UINT, UINT); |
ON_WM_ICONERASEBKGND() | afx_msg void OnIconEraseBkgnd(CDC*); |
ON_WM_INITMENU() | afx_msg void OnInitMenu(CMenu*); |
ON_WM_INITMENUPOPUP() | afx_msg void OnInitMenuPopup(CMenu*, UINT, BOOL); |
ON_WM_KEYDOWN() | afx_msg void OnKeyDown(UINT, UINT, UINT); |
ON_WM_KEYUP() | afx_msg void OnKeyUp(UINT, UINT, UINT); |
ON_WM_KILLFOCUS() | afx_msg void OnKillFocus(CWnd*); |
ON_WM_LBUTTONDBLCLK() | afx_msg void OnLButtonDblClk(UINT, CPoint); |
ON_WM_LBUTTONDOWN() | afx_msg void OnLButtonDown(UINT, CPoint); |
ON_WM_LBUTTONUP() | afx_msg void OnLButtonUp(UINT, CPoint); |
ON_WM_MBUTTONDBLCLK() | afx_msg void OnMButtonDblClk(UINT, CPoint); |
ON_WM_MBUTTONDOWN() | afx_msg void OnMButtonDown(UINT, CPoint); |
ON_WM_MBUTTONUP() | afx_msg void OnMButtonUp(UINT, CPoint); |
ON_WM_MDIACTIVATE() | afx_msg void OnMDIActivate(BOOL, CWnd*, CWnd*); |
ON_WM_MEASUREITEM() | afx_msg void OnMeasureItem(int, LPMEASUREITEMSTRUCT); |
ON_WM_MEASUREITEM_REFLECT() | afx_msg void MeasureItem (LPMEASUREITEMSTRUCT); |
ON_WM_MENUCHAR() | afx_msg LRESULT OnMenuChar(UINT, UINT, CMenu*); |
ON_WM_MENUSELECT() | afx_msg void OnMenuSelect(UINT, UINT, HMENU); |
ON_WM_MOUSEACTIVATE() | afx_msg int OnMouseActivate(CWnd*, UINT, UINT); |
ON_WM_MOUSEMOVE() | afx_msg void OnMouseMove(UINT, CPoint); |
ON_WM_MOUSEWHEEL() | afx_msg BOOL OnMouseWheel(UINT, short, CPoint); |
ON_WM_MOVE() | afx_msg void OnMove(int, int); |
ON_WM_MOVING() | afx_msg void OnMoving(UINT, LPRECT); |
ON_WM_NCACTIVATE() | afx_msg BOOL OnNcActivate(BOOL); |
ON_WM_NCCALCSIZE() | afx_msg void OnNcCalcSize(BOOL, NCCALCSIZE_PARAMS*); |
ON_WM_NCCREATE() | afx_msg BOOL OnNcCreate (LPCREATESTRUCT); |
ON_WM_NCDESTROY() | afx_msg void OnNcDestroy(); |
ON_WM_NCHITTEST() | afx_msg UINT OnNcHitTest(CPoint); |
ON_WM_NCLBUTTONDBLCLK() | afx_msg void OnNcLButtonDblClk(UINT, CPoint); |
ON_WM_NCLBUTTONDOWN() | afx_msg void OnNcLButtonDown(UINT, CPoint); |
ON_WM_NCLBUTTONUP() | afx_msg void OnNcLButtonUp(UINT, CPoint); |
ON_WM_NCMBUTTONDBLCLK() | afx_msg void OnNcMButtonDblClk(UINT, CPoint); |
ON_WM_NCMBUTTONDOWN() | afx_msg void OnNcMButtonDown(UINT, CPoint); |
ON_WM_NCMBUTTONUP() | afx_msg void OnNcMButtonUp(UINT, CPoint); |
ON_WM_NCMOUSEMOVE() | afx_msg void OnNcMouseMove(UINT, CPoint); |
ON_WM_NCPAINT() | afx_msg void OnNcPaint(); |
ON_WM_NCRBUTTONDBLCLK() | afx_msg void OnNcRButtonDblClk(UINT, CPoint); |
ON_WM_NCRBUTTONDOWN() | afx_msg void OnNcRButtonDown(UINT, CPoint); |
ON_WM_NCRBUTTONUP() | afx_msg void OnNcRButtonUp(UINT, CPoint); |
ON_WM_PAINT() | afx_msg void OnPaint(); |
ON_WM_PAINTCLIPBOARD() | afx_msg void OnPaintClipboard(CWnd*, HGLOBAL); |
ON_WM_PALETTECHANGED() | afx_msg void OnPaletteChanged(CWnd*); |
ON_WM_PALETTEISCHANGING() | afx_msg void OnPaletteIsChanging(CWnd*); |
ON_WM_PARENTNOTIFY() | afx_msg void OnParentNotify(UINT, LPARAM); |
ON_WM_PARENTNOTIFY_REFLECT() | afx_msg void ParentNotify(UINT, LPARAM); |
ON_WM_QUERYDRAGICON() | afx_msg HCURSOR OnQueryDragIcon(); |
ON_WM_QUERYENDSESSION() | afx_msg BOOL OnQueryEndSession(); |
ON_WM_QUERYNEWPALETTE() | afx_msg BOOL OnQueryNewPalette(); |
ON_WM_QUERYOPEN() | afx_msg BOOL OnQueryOpen(); |
ON_WM_RBUTTONDBLCLK() | afx_msg void OnRButtonDblClk(UINT, CPoint); |
ON_WM_RBUTTONDOWN() | afx_msg void OnRButtonDown(UINT, CPoint); |
ON_WM_RBUTTONUP() | afx_msg void OnRButtonUp(UINT, CPoint); |
ON_WM_RENDERALLFORMATS() | afx_msg void OnRenderAllFormats(); |
ON_WM_RENDERFORMAT() | afx_msg void OnRenderFormat(UINT); |
ON_WM_SETCURSOR() | afx_msg BOOL OnSetCursor(CWnd*, UINT, UINT); |
ON_WM_SETFOCUS() | afx_msg void On SetFocus(CWnd*); |
ON_WM_SETTINGCHANGE() | afx_msg void OnSettingChange(UINT, LPCTSTR); |
ON_WM_SHOWWINDOW() | afx_msg void OnShowWindow(BOOL, UINT); |
ON_WM_SIZE() | afx_msg void OnSize(UINT, int, int); |
ON_WM_SIZECLIPBOARD() | afx_msg void OnSizeClipboard(CWnd*, HGLOBAL); |
ON_WM_SIZING() | afx_msg void OnSizing(UINT, LPRECT); |
ON_WM_SPOOLERSTATUS() | afx_msg void OnSpoolerStatus(UINT, UINT); |
ON_WM_STYLECHANGED() | afx_msg void OnStyleChanged(int, LPSTYLESTRUCT); |
ON_WM_STYLECHANGING() | afx_msg void OnStyleChanging(int, LPSTYLESTRUCT); |
ON_WM_SYSCHAR() | afx_msg void OnSysChar(UINT, UINT, UINT); |
ON_WM_SYSCOLORCHANGE() | afx_msg void OnSysColorChange(); |
ON_WM_SYSCOMMAND() | afx_msg void OnSysCommand(UINT, LPARAM); |
ON_WM_SYSDEADCHAR() | afx_msg void OnSysDeadChar(UINT, UINT, UINT); |
ON_WM_SYSKEYDOWN() | afx_msg void OnSysKeyDown(UINT, UINT, UINT); |
ON_WM_SYSKEYUP() | afx_msg void OnSysKeyUp(UINT, UINT, UINT); |
ON_WM_TCARD() | afx_msg void OnTCard(UINT, DWORD); |
ON_WM_TIMECHANGE() | afx_msg void OnTimeChange(); |
ON_WM_TIMER() | afx_msg void OnTimer(UINT); |
ON_WM_VKEYTOITEM() | afx_msg int OnVKeyToItem(UINT, CListBox*, UINT); |
ON_WM_VKEYTOITEM_REFLECT() | afx_msg int VKeyToItem(UINT, UINT); |
ON_WM_VSCROLL() | afx_msg void OnVScroll(UINT, UINT, CScrollBar*); |
ON_WM_VSCROLL_REFLECT() | afx_msg void VScroll(UINT, UINT); |
ON_WM_VSCROLLCLIPBOARD() | afx_msg void OnVScrollClipboard(CWnd*, UINT, UINT); |
ON_WM_WINDOWPOSCHANGED() | afx_msg void OnWindowPosChanged (WINDOWPOS*); |
ON_WM_WINDOWPOSCHANGING() | afx_msg void OnWindowPosChanging (WINDOWPOS*); |
ON_WM_WININICHANGE() | afx_msg void OnWinIniChange(LPCTSTR); |
用户自定义消息与处理对应规则:
消息映射 | 对应处理函数原型 |
ON_MESSAGE(<message>, <memberFxn>) | afx_msg LRESULT memberFxn(WPARAM, LPARAM); |
ON_REGISTERED_MESSAGE (<nMessageVariable>,<memberFxn>) | afx_msg LRESULT memberFxn(WPARAM, LPARAM); |
ON_REGISTERED_THREADMESSAGE(<nMessageVariable>, <memberFxn>) | afx_msg void memberFxn(WPARAM, LPARAM); |
ON_THREAD_MESSAGE (<message>, <memberFxn>) | afx_msg void memberFxn(WPARAM, LPARAM); |