Overview
MFC now uses a static_cast within the message map macros to improve type checking. The type checking enforces return and parameter types. The stricter type checking produces error messages when potentially unsafe message handlers are used. For example, here's the ON_COMMAND macro:
#define ON_COMMAND(id, memberFxn) { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSigCmd_v, static_cast<AFX_PMSG> (memberFxn) }
The following tables list the message map functions in the MFC library, including the handlers for WM_COMMAND messages, child window notification messages, window notification messages, and user-defined message codes.
Map Entry | Function Prototype |
---|---|
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*); |
Map Entry | Function Prototype |
---|---|
Generic Control Notification 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 Button Notification 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 Notification Codes | |
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 Box Notification Codes | |
ON_CLBN_CHKCHANGE(<id>, <memberFxn>) | afx_msg void memberFxn(); |
Edit Control Notification 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 Notification Codes | |
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(); |
Map Entry | Function Prototype |
---|---|
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 (LPCOMPAREITEM STRUCT); |
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 OnSetFocus(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); |
Map Entry | Function Prototype |
---|---|
ON_MESSAGE(<message>,<memberFxn>) | afx_msg LRESULT memberFxn(WPARAM, LPARAM); |
ON_REGISTERED_MESSAGE (<nMessageVariable>,<memberFxn>) | afx_msg LRESULT memberFxn(WPARAM, LPARAM); |
ON_REGISTERED_THREAD MESSAGE (<nMessageVariable>, <memberFxn>) | afx_msg void memberFxn(WPARAM, LPARAM); |
ON_THREAD_MESSAGE (<message>, <memberFxn>) | afx_msg void memberFxn(WPARAM, LPARAM); |