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_DROPDOW |