DECLARE_MESSAGE_MAP使用方法

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为该消息相应的处理的函数名。

posted @ 2017-04-15 12:26  jzdwajue  阅读(348)  评论(0编辑  收藏  举报