今天简单学习一下MFC的消息映射,后期会在此文中不断添加内容,可以理解为对MSDN中Message Maps的简单翻译。
消息分类
MFC消息分为四类:
- WM_COMMAND 消息
- 子窗口通知消息
- WM_ 消息
- 用户自定义消息
消息映射通常用一个或多个宏来指定消息与消息响应函数,如:
BEGIN_MESSAGE_MAP(CMyDoc, CDocument)
ON_COMMAND(ID_MYCMD, &CMyDoc::OnMyCommand)
END_MESSAGE_MAP()
ON_COMMAND宏被用来处理菜单、按钮、快捷键等产生的消息。
消息宏可以映射以下消息:
- Windows消息
1. 控制通知
2. 用户自定义消息
- 命令消息
1. 已注册的用户自定义消息
2. 用户接口更新消息
- 消息范围
1. 命令消息
2. 更新句柄消息
3. 控制消息
Message Maps(MFC)
Category | Description |
---|---|
WM_COMMAND Message Handler | Handles WM_COMMAND messages generated by user menu selections or menu access keys. |
Child Window Notification Message Handlers | Handle notification messages from child windows. |
WM_ Message Handlers | Handle WM_ messages, such as WM_PAINT. |
User-Defined Message Handlers | Handle user-defined messages. |
WM_COMMAND Message Handler
Map entry | Function prototype |
---|---|
ON_COMMAND(< id >, < memberFxn > ) | afx_msg void memberFxn(); |
Child Window Notification Message Handlers
Category | Description |
---|---|
Generic Control Handler | Handler for generic control notification codes. |
User Button Handlers | Handler for user button notification codes. |
Combo box Handlers | Handler for combo box notification codes. |
Edit Control Handlers | Handler for edit control notification codes. |
List Box Handlers | Handler for list box notification codes. |
WM_ Message Handlers
User-Defined Message Handlers
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_THREAD_MESSAGE( < message >, < memberFxn > ) | afx_msg void memberFxn(WPARAM, LPARAM) |
ON-REGISTERED_THREAD_MESSAGE(< nMessageVariable >, < memberFxn >) | afx_msg void memberFxn(WPARAM, LPARAM) |
有了前面的大框架,下面就可以在这个框架下学习具体的消息处理过程。