假设自定义消息号是WM_TEST,消息处理函数是OnTest,处理该消息的对话框指针是m_pTestDlg,则进行自定义消息处理的步骤主要有以下:
1、定义消息号,建议在stdafx.h中进行定义
#define WM_TEST WM_USER+1
//! 自定义消息
2、在响应该消息的对话框头文件中找到DECLARE_MESSAGE_MAP()宏,在该宏定义的前面添加消息处理函数声明
afx_msg void OnTest(WPARAM wParam, LPARAM lParam);
//! afx_msg可以让我们看到这是一个消息映射函数,编译器直接忽略。(也可以直接声明消息响应函数)
3、在响应该消息的对话框源文件中,进行消息处理函数的定义。
4、在响应该消息的对话框源文件中,找到消息映射宏
BEGIN_MESSAGE_MAP() 和 END_MESSAGE_MAP(),并在这对宏之间加入
ON_MESSAGE(WM_TEST, OnTest);
5、通过
::PostMessage(m_pTestDlg->getSafeWnd(), WM_TEST, 0, 0);
::SendMessage(m_pTestDlg->getSafeWnd(), WM_TEST, 0, 0);
当对话框类收到WM_TEST消息时,OnTest函数开始执行,完成消息的响应。