DECLARE_MESSAGE_MAP使用方法
DECLARE_MESSAGE_MAP(
)
说明:
你的程序中的每个CCmdTarget的派生类都能够提供一个消息映射以处理消息。在你的类声明的末尾使用DECLARE_MESSAGE_MAP宏。然后,在实现了类成员函数的.CPP文件里增加BEGIN_MESSAGE_MAP宏。再增加每个消息处理函数的宏入口。最后使用END_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为该消息相应的处理的函数名。