博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DECLARE_MESSAGE_MAP用法
阅读量:5138 次
发布时间:2019-06-13

本文共 1197 字,大约阅读时间需要 3 分钟。

DECLARE_MESSAGE_MAP( ) 

说明: 
你的程序中的每一个CCmdTarget的派生类都可以提供一个消息映射以处理消息。在你的类声明的末尾使用DECLARE_MESSAGE_MAP宏。 然后,在实现了类成员函数的.CPP文件中加入BEGIN_MESSAGE_MAP宏,再加入每个消息处理函数的宏入口,最后使用 END_MESSAGE_MAP宏。 
注意: 
如果你在DECLARE_MESSAGE_MAP之后定义了成员,那么你必须为它们指定新的访问类型(public,private 或protected)。 
关于消息映射和DECLARE_MESSAGE_MAP宏的更多信息参见“Visual C++程序员指南”中的“消息处理”和“映射主题”。 

示例: 
// DECLARE_MESSAGE_MAP的例子 
class CMyWnd : public CFrameWnd 
{

 
// 成员声明 
DECLARE_MESSAGE_MAP( ) 

};

说明: 

DECLARE_MESSAGE_MAP()宏的作用是向类中添加消息映射必要的结构体和函数声明,只需要添加一次,放在什么位置并不重要,就如同类里其他普通函数的声明可以相互交换顺序一样。 函数的修饰符也是可以自己决定的,遵循一般原则。比如你需要在类外部也可以调用该消息响应函数,就可以定义成public的。
======================================================
在一些资料上,有这么一段文字:  DECLARE_MESSAGE_MAP()  说明:  用户程序中的每个CCmdTarget派生类必须提供消息映射以处理消息。在类定义的末尾使用DECLARE_MESSAGE_MAP宏。接着,在定义类成员函数的.CPP文件中,使用BEGIN_MESSAGE_MAP宏,每个用户消息处理函数的宏项下面的列表以及END_MESSAGE_MAP宏。  注释: 如果在DECLARE_MESSAGE_MAP之后定义任何一个成员,那么必须为他们指定一个新存取类型(公共的,私有的,保护的)。 我觉得他描述得欠妥,我的理解是: 只要有:只要是CCmdTarget(用于所有能够消息映射的基类)派生类,必有消息映射以处理消息,则在类的说明文件的尾部有DECLARE_MESSAGE_MAP宏,在类的定义文件中有BEGIN_MESSAGE_MAP宏和END_MESSAGE_MAP宏以处理用户消息。 其中BEGIN_MESSAGE_MAP(参数1,参数2) ,参数1为该类的类名,参数2为该类基类的类名。 其中ON_MESSAGE(参数1,参数2),参数1为响应的消息,参数2为该消息对应的处理的函数名。

转载于:https://www.cnblogs.com/ssjie/p/4951917.html

你可能感兴趣的文章
【转】这些隐藏在苹果iPhone当中的内置代码你是否知道?
查看>>
Fedora 17 x86_64 U盘安装详解
查看>>
BZOJ.1007.[HNOI2008]水平可见直线(凸壳 单调栈)
查看>>
PCB板的线宽、覆铜厚度与通过的电流对应的关系
查看>>
linux4.1.36 解决 SPI 时钟找不到 不生成设备 device
查看>>
ibatis 中isNull, isNotNull与isEmpty, isNotEmpty区别(转)
查看>>
Mysql Insert Or Update语法例子
查看>>
python+Eclipse+pydev环境搭建
查看>>
1.8
查看>>
Android各个文件夹对应的分辨率?
查看>>
CentOS 7 安装与卸载MySQL
查看>>
bzoj 4545: DQS的trie
查看>>
IO流的读写
查看>>
Java 如何抛出异常、自定义异常
查看>>
c语言实现n!算法
查看>>
中文文本分类之TextRNN
查看>>
HUAS 1483 mex(莫队算法)
查看>>
asp邮件发送
查看>>
Android ListView下拉刷新 Demo
查看>>
Python-装饰器(Decorator)
查看>>