CMessageMap 类

此类允许对象的消息映射被另一个对象访问。

重要

无法在 Windows 运行时中执行的应用程序中使用此类及其成员。

语法

class ATL_NO_VTABLE CMessageMap

成员

公共方法

名称 描述
CMessageMap::ProcessWindowMessage 访问 CMessageMap 派生类中的消息映射。

备注

CMessageMap 是一个抽象基类,允许某个对象的消息映射被另一个对象访问。 为了让对象公开其消息映射,其类必须派生自 CMessageMap

ATL 使用 CMessageMap 来支持包含的窗口和动态消息映射链接。 例如,任何包含 CContainedWindow 对象的类都必须派生自 CMessageMap。 以下代码取自 SUBEDIT 示例。 通过 CComControlCAtlEdit 类自动派生自 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 窗口类”中的消息映射

要求

标头:atlwin.h

CMessageMap::ProcessWindowMessage

访问由 CMessageMap 派生类中的 dwMsgMapID 标识的消息映射。

virtual BOOL ProcessWindowMessage(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam,
    LRESULT& lResult,
    DWORD dwMsgMapID) = 0;

参数

hWnd
[in] 接收消息的窗口的句柄。

uMsg
[in] 发送到窗口的消息。

wParam
[in] 其他的消息特定信息。

lParam
[in] 其他的消息特定信息。

lResult
[out] 消息处理的结果。

dwMsgMapID
[in] 将处理消息的消息映射的标识符。 使用 BEGIN_MSG_MAP 声明的默认消息映射由 0 标识。 使用 ALT_MSG_MAP(msgMapID) 声明的备用消息映射由 msgMapID 标识。

返回值

如果消息已完全处理,则为 TRUE;否则为 FALSE。

备注

CContainedWindow 对象的窗口过程或者动态链接到消息映射的对象的窗口过程进行调用。

另请参阅

CDynamicChain 类
BEGIN_MSG_MAP
ALT_MSG_MAP(msgMapID)
类概述