如何在MFC对话框之间自定义消息传递
发布网友
发布时间:2022-05-22 10:24
我来回答
共1个回答
热心网友
时间:2024-03-08 01:39
1.消息发送方:发送消息
首先在A的头文件(*.h)中自定义这个消息:
1 #define WM_MyMessage WM_USER+100
或者:
1 const UINT WM_MYMESSAGE = WM_USER + n
需注意以下几点:
所有自定义消息都是以WM_USER消息为基础加上一个任意的自然数n来表示的, n一般至少大于100
该消息一般加在stdafx.h 或resource.h 或*.h中,一般都是全局变量头文件
A是向外发送消息的对象,因此在A的某个方法(函数)里就会调用用来发消息的函数B::SendMessage()/B::PostMessage(),因为是B接受消息。
回到顶部
2.消息接收方:接受消息
消息接收方对象接受一个消息,需有以下三部分:
在头文件(*.h)中有该消息的处理函数的原型;
在实现文件(*.cpp)中有接受消息映射的宏;
在实现文件(*.cpp)中有该消息的处理函数的具体实现。
2.1 头文件中加上自定义消息的处理函数原型
在DECLARE_MESSAGE_MAP()语句之前,加如下形式的函数原型:
1 afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
对Win32来说,wParam, lParam是传递消息最常用的手段。
2.2 实现文件中加上接受消息映射的宏
在cpp文件里,BEGIN_MESSAGE_MAP语句之后,加如下形式的代码:
1 ON_MESSAGE(WM_MyMessage, OnMyMessage)
也就是说WM_MyMessage消息对应OnMyMessage函数。注意,上面是不用分号结尾的。
2.3 在实现文件中给出消息处理函数的具体实现
1 LRESULT CBDlg::OnMyMessage( WPARAM wParam, LPARAM lParam )
2 {
3 //处理用户自定义消息
4 ......
5 return 0;
6 }