Classe CMessageMap

Essa classe permite que os mapas de mensagens de um objeto sejam acessados por outro objeto.

Importante

Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.

Sintaxe

class ATL_NO_VTABLE CMessageMap

Membros

Métodos públicos

Nome Descrição
CMessageMap::ProcessWindowMessage Acessa um mapa de mensagens na classe derivada de CMessageMap.

Comentários

CMessageMap é uma classe base abstrata que permite que os mapas de mensagens de um objeto sejam acessados por outro objeto. Para que um objeto exponha os mapas de mensagens, a classe deverá derivar de CMessageMap.

ATL usa CMessageMap para dar suporte a janelas contidas e encadeamento dinâmico de mapa de mensagens. Por exemplo, todas as classes contendo um objeto CContainedWindow deverão derivar de CMessageMap. O código a seguir é obtido do exemplo SUBEDIT. Por meio de CComControl, a classe CAtlEdit deriva automaticamente de 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()

Como a janela contida, m_EditCtrl, usará um mapa de mensagem na classe que contém, CAtlEdit deriva de CMessageMap.

Para obter mais informações sobre os mapas de mensagens, consulte Mapas de mensagens no artigo "Classes de janela de ATL."

Requisitos

Cabeçalho: atlwin.h

CMessageMap::ProcessWindowMessage

Acessa o mapa de mensagens identificado por dwMsgMapID em uma classe derivada de CMessageMap.

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

Parâmetros

hWnd
[in] O identificador para a janela que recebe a mensagem.

uMsg
[in] A mensagem enviada para a janela.

wParam
[in] Informações adicionais específicas de mensagem.

lParam
[in] Informações adicionais específicas de mensagem.

lResult
[out] O resultado do processamento de mensagem.

dwMsgMapID
[in] O identificador do mapa de mensagens que processará a mensagem. O mapa de mensagens padrão, declarado com BEGIN_MSG_MAP, é identificado por 0. Um mapa de mensagem alternativo, declarado com ALT_MSG_MAP(msgMapID), é identificado por msgMapID.

Valor de retorno

TRUE se a mensagem for totalmente tratada, caso contrário, será FALSE.

Comentários

Chamado pelo procedimento de janela de um objeto CContainedWindow ou de um objeto que está encadeando dinamicamente ao mapa de mensagens.

Confira também

Classe CDynamicChain
BEGIN_MSG_MAP
ALT_MSG_MAP(msgMapID)
Visão geral da aula