如何在MFC对话框之间自定义消息传递

如何在MFC对话框之间自定义消息传递,第1张

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 }

添加消息:在类视图先选中要添加的类,然后在属性框的右上的消息按钮,选中消息后点击添加即可。

删除消息:在相关的类的类名上右击,选择属性,在右边d出的属性对话框的上面选择消息,找到相应的消息,在具体消息的右边的空格中单击,d出下拉列表,选择删除就行了


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11887407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存