Compartilhar via


BEGIN_MSG_MAP

Marca o início do mapa padrão de mensagem.

BEGIN_MSG_MAP( theClass )

Parâmetros

  • theClass
    [in] o nome de classe que contém o mapa de mensagem.

Comentários

CWindowImpl::WindowProc usa o mapeamento padrão de mensagens para processar mensagens enviadas para a janela.O mapa de mensagem direciona mensagens para a função apropriada do manipulador ou a outro mapa de mensagem.

Os seguintes macros mapeiam uma mensagem a uma função de manipulador.Essa função deve ser definida em theClass.

Macro

Descrição

MESSAGE_HANDLER

Mapeia uma mensagem do windows para uma função do manipulador.

MESSAGE_RANGE_HANDLER

Mapeia um intervalo contígua de mensagens do windows para uma função do manipulador.

COMMAND_HANDLER

Mapeia uma mensagem de WM_COMMAND a uma função de manipulador, com base no código de notificação e o identificador do item de menu, do controle, ou de aceleração.

COMMAND_ID_HANDLER

Mapeia uma mensagem de WM_COMMAND a uma função de manipulador, com base no identificador do item de menu, do controle, ou de aceleração.

COMMAND_CODE_HANDLER

Mapeia uma mensagem de WM_COMMAND a uma função de manipulador, com base no código de notificação.

COMMAND_RANGE_HANDLER

Mapeia um intervalo contígua de mensagens de WM_COMMAND a uma função de manipulador, com base no identificador do item de menu, do controle, ou de aceleração.

NOTIFY_HANDLER

Mapeia uma mensagem de WM_NOTIFY a uma função de manipulador, com base no código de notificação e o identificador de controle.

NOTIFY_ID_HANDLER

Mapeia uma mensagem de WM_NOTIFY a uma função de manipulador, com base no identificador de controle.

NOTIFY_CODE_HANDLER

Mapeia uma mensagem de WM_NOTIFY a uma função de manipulador, com base no código de notificação.

NOTIFY_RANGE_HANDLER

Mapeia um intervalo contígua de mensagens de WM_NOTIFY a uma função de manipulador, com base no identificador de controle.

Os seguintes macros direcionam mensagens para outro mapa de mensagem.Esse processo é chamado “encadeamento”.

Macro

Descrição

CHAIN_MSG_MAP

Cadeias ao mapa padrão de mensagem na classe base.

CHAIN_MSG_MAP_MEMBER

Cadeias ao mapa padrão de mensagem em um membro de dados da classe.

CHAIN_MSG_MAP_ALT

Cadeias a um mapa alternativo de mensagem na classe base.

CHAIN_MSG_MAP_ALT_MEMBER

Cadeias a um mapa alternativo de mensagem em um membro de dados da classe.

CHAIN_MSG_MAP_DYNAMIC

Cadeias ao mapa padrão de mensagem em outra classe em tempo de execução.

Os seguintes macros direcionam mensagens “refletidas” da janela pai.Por exemplo, um controle envia normalmente notificações para sua janela pai para processar, mas a janela pai é possível refletir a mensagem de volta para o controle.

Macro

Descrição

REFLECTED_COMMAND_HANDLER

Mapeia uma mensagem refletida de WM_COMMAND a uma função de manipulador, com base no código de notificação e o identificador do item de menu, do controle, ou de aceleração.

REFLECTED_COMMAND_ID_HANDLER

Mapeia uma mensagem refletida de WM_COMMAND a uma função de manipulador, com base no identificador do item de menu, do controle, ou de aceleração.

REFLECTED_COMMAND_CODE_HANDLER

Mapeia uma mensagem refletida de WM_COMMAND a uma função de manipulador, com base no código de notificação.

REFLECTED_COMMAND_RANGE_HANDLER

Mapeia uma mensagem refletida de WM_COMMAND a uma função de manipulador, com base em um intervalo contígua de identificadores de controle.

REFLECTED_COMMAND_RANGE_CODE_HANDLER

Mapeia uma mensagem refletida de WM_COMMAND a uma função de manipulador, com base no código de notificação e em um intervalo contígua de identificadores de controle.

REFLECTED_NOTIFY_HANDLER

Mapeia uma mensagem refletida de WM_NOTIFY a uma função de manipulador, com base no código de notificação e o identificador de controle.

REFLECTED_NOTIFY_ID_HANDLER

Mapeia uma mensagem refletida de WM_NOTIFY a uma função de manipulador, com base no identificador de controle.

REFLECTED_NOTIFY_CODE_HANDLER

Mapeia uma mensagem refletida de WM_NOTIFY a uma função de manipulador, com base no código de notificação.

REFLECTED_NOTIFY_RANGE_HANDLER

Mapeia uma mensagem refletida de WM_NOTIFY a uma função de manipulador, com base em um intervalo contígua de identificadores de controle.

REFLECTED_NOTIFY_RANGE_CODE_HANDLER

Mapeia uma mensagem refletida de WM_NOTIFY a uma função de manipulador, com base no código de notificação e em um intervalo contígua de identificadores de controle.

Exemplo

class CMyExtWindow : public CMyBaseWindow
{
public:
   BEGIN_MSG_MAP(CMyExtWindow)
      MESSAGE_HANDLER(WM_PAINT, OnPaint)
      MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
      CHAIN_MSG_MAP(CMyBaseWindow)
   END_MSG_MAP()

   LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/)
   {
      return 0;   
   }

   LRESULT OnSetFocus(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/) 
   {
      return 0;   
   }
};

Quando um objeto de CMyExtWindow recebe uma mensagem de WM_PAINT , a mensagem é direcionada a CMyExtWindow::OnPaint para o processamento real.Se OnPaint indica a mensagem requer processamento adicional, a mensagem será direcionada para o mapeamento padrão de mensagem em CMyBaseWindow.

Além do mapa padrão de mensagem, você pode definir um mapa alternativo de mensagem com ALT_MSG_MAP.Inicie sempre um mapa de mensagem com BEGIN_MSG_MAP.Você pode declarar em mapas alternativos subseqüentes de mensagem.O exemplo a seguir mostra o mapeamento padrão de mensagem e um mapa alternativo de mensagem, cada uma função de manipulador:

BEGIN_MSG_MAP(CMyOneAltClass)
   MESSAGE_HANDLER(WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
   MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()

O exemplo a seguir mostra dois mapas alternativas de mensagem.O mapeamento padrão de mensagem está vazia.

BEGIN_MSG_MAP(CMyClass)
ALT_MSG_MAP(1)
   MESSAGE_HANDLER(WM_PAINT, OnPaint)
   MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
ALT_MSG_MAP(2)
   MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()

A macro de END_MSG_MAP marca ao final do mapa de mensagem.Observe que há sempre exatamente uma instância de BEGIN_MSG_MAP e de END_MSG_MAP.

Para obter mais informações sobre como usar mapas de mensagem em ATL, consulte Mapas de mensagem.

Requisitos

Cabeçalho: atlwin.h

Consulte também

Referência

Classe de CMessageMap

Classe de CDynamicChain

Outros recursos

Macros do mapa de mensagens (ATL)

Macros de ATL