CMessageMap选件类
此选件类允许对象的消息映射是访问由另一个对象。
重要事项 |
---|
此选件类及其成员不能在Windows运行时执行的应用程序。 |
class ATL_NO_VTABLE CMessageMap
成员
公共方法
名称 |
描述 |
---|---|
访问 CMessageMap的消息映射派生类。 |
备注
CMessageMap 是允许对象的消息映射被其他对象获取的抽象基类。为了对象可以显示其消息映射,其选件类必须从 CMessageMap派生。
ATL使用 CMessageMap 支持包含窗口和动态消息映射绑定。例如,包含 CContainedWindow 对象的任何选件类必须从 CMessageMap派生。下面的代码从 SUBEDIT 示例中采用。通过 CComControl,CAtlEdit 选件类从 CMessageMap自动派生。
class ATL_NO_VTABLE CAtlEdit :
OtherInheritedClasses
public CComControl<CAtlEdit>
// CComControl derives from CWindowImpl, which derives from CMessageMap
{
public:
// Declare a contained window data member
CContainedWindow m_ctlEdit;
// Initialize the contained window:
// 1. Pass "Edit" to specify that the contained
// window should be based on the standard
// Windows Edit box
// 2. Pass 'this' pointer to specify that CAtlEdit
// contains the message map to be used for the
// contained window's message processing
// 3. Pass the identifier of the message map. '1'
// identifies the alternate message map declared
// with ALT_MSG_MAP(1)
CAtlEdit()
: m_ctlEdit(_T("Edit"), this, 1)
{
m_bWindowOnly = TRUE;
}
// Declare the default message map, identified by '0'
BEGIN_MSG_MAP(CAtlEdit)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
CHAIN_MSG_MAP(CComControl<CAtlEdit>)
// Declare an alternate message map, identified by '1'
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_CHAR, OnChar)
END_MSG_MAP()
由于包含窗口,m_EditCtrl,在包含的选件类将使用消息映射,CAtlEdit 从 CMessageMap派生。
有关消息映射的更多信息,请参见 消息映射 在该文章“ATL窗口选件类上”。
要求
Header: atlwin.h