今天继续做一个小单子,其中一个GridCtrl控件的WM_CHAR消息在被GridCtrl响应后需要再被主对话框响应,因此考虑在GridCtrl的OnChar函数中给主对话框发送一个用户自定义消息。这一节来复习一下基本步骤。
- 步骤一:在头文件最好是 resource.h 中声明消息
#define WM_MYCHARMSG WM_USER + 1
- 步骤二:在响应类中声明消息映射(这一步通常可以省略,环境默认就有了的)
DECLARE_MESSAGE_MAP()
- 步骤三:在类声明中定义消息处理函数
afx_msg LRESULT OnMyCharMsgHandler(WPARAM, LPARAM);
- 步骤四:在.cpp文件中实现消息映射
BEGIN_MESSAGE_MAP(xxxx, xxxx)
ON_MESSAGE(WM_MYCHARMSG, OnMyCharMsgHandler);
END_MESSAGE_MAP()
- 步骤五:实现消息处理函数
LRESULT CXXXXDlg::OnMyCharMsgHandler(WPARAM wParam, LPARAM lParam)
{
// Message Handler
// ..
return 0;
}
- 最后只需要在引发或发出消息的地方加上:
::SendMessage(xxx, WM_MYCHARMSG, 0, 0);
或者PostMesage()函数即可。