[C++][Visual Studio] [MFC] 添加用户自定义消息及消息响应函数讲解
一、前言
本文介绍 两种方法 添加用户自定义消息及消息响应函数。
- 第一种,用户手动添加两个文件((.h)和 (.cpp))的内容。
- 第二种,利用 MFC 的集成功能,自动添加。(推荐)
二、讲解
1.方法一:用户手动添加。
步骤:
1.在“ .h ”文件中:
①.声明消息,代码如下:
#define WM_MyMessage WM_USER+100
(附:MFC自有的消息都是在WM_USER内的,所以自定义的消息要比WM_USER大。)
②.在类声明中声明消息映射,代码如下:
DECLARE_MESSAGE_MAP()
③.在类声明中定义消息处理函数,代码如下:
afx_msg LRESULT OnMyMessage(WPARAM wParam ,LPARAM lParam);
2.在“ .cpp ”文件中 :
①.定义消息映射,代码如下:
BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
ON_MESSAGE(MyMessage, &CAboutDlg::OnMymessage)
END_MESSAGE_MAP()
②.定义消息处理函数,代码如下:
afx_msg LRESULT CAboutDlg::OnMymessage(WPARAM wParam, LPARAM lParam)
{
return 0;
}
2.方法二: MFC 软件添加。
步骤:
①.在“ .h ”文件中声明消息,代码如下:
#define WM_MyMessage WM_USER+100
(附:MFC自有的消息都是在WM_USER内的,所以自定义的消息要比WM_USER大。)
②.声明消息映射、声明消息处理函数、定义消息映射、定义消息处理函数,方法如下:
可用类向导中消息->添加自定义消息,添加的消息名为WM_MyMessage,自动添加消息处理函数。则系统自动在头文件中添加消息处理函数的声明,.cpp文件中添加消息映射处理及消息处理函数的定义,只需添加定义的具体内容即可。
(附:软件自动生成结果展示:
声明消息映射部分:
DECLARE_MESSAGE_MAP()
声明消息处理函数部分:
afx_msg LRESULT OnMymessage(WPARAM wParam, LPARAM lParam);
定义消息处理函数部分:
afx_msg LRESULT CDialog1::OnMymessage(WPARAM wParam, LPARAM lParam)
{
return 0;
}
定义消息映射处理部分:
BEGIN_MESSAGE_MAP(CDialog1, CDialogEx)
ON_MESSAGE(WM_MyMessage, &CDialog1::OnMymessage)
END_MESSAGE_MAP()
)
3.发送自定义消息
发送自定义消息,可使用如下两个函数:
SendMessage(WM_MyMessage,0,0);
或者
PostMessage(WM_MyMessage,0,0);