BEGIN_MSG_MAP ( theClass )
Parâmetros
theClass
[no] O nome da classe que contém o mapa de mensagem.
Observações
Marca o início do mapa da mensagem padrão. CWindowImpl:: WindowProc usa o mapa de mensagem padrão para processar mensagens enviadas para a janela. O mapa da mensagem direciona mensagens para a função de manipulador apropriado ou para outro mapa da mensagem.
As seguintes macros mapeiam uma mensagem de uma função de manipulador. Esta função deve ser definida em theClass.
| Macro | Descrição |
| MESSAGE_HANDLER | Mapas uma mensagem do Windows para uma função de manipulador. |
| MESSAGE_RANGE_HANDLER | Mapeia um intervalo contíguo de Windows mensagens para uma função de manipulador. |
| COMMAND_HANDLER | Mapas uma mensagem WM_COMMAND para uma função de manipulador, com base no código de notificação e o identificador do item de menu, Controlarar ou acelerador. |
| COMMAND_ID_HANDLER | Mapas uma mensagem WM_COMMAND para uma função de manipulador, com base no identificador do item de menu, Controlarar ou acelerador. |
| COMMAND_CODE_HANDLER | Mapas uma mensagem WM_COMMAND para uma função de manipulador, com base no código de notificação. |
| COMMAND_RANGE_HANDLER | Mapeia um intervalo contíguo de mensagens WM_COMMAND para uma função de manipulador, com base no identificador do item de menu, Controlarar ou acelerador. |
| NOTIFY_HANDLER | Mapas uma mensagem WM_NOTIFY para uma função de manipulador, com base no código de notificação e o identificador de controle. |
| NOTIFY_ID_HANDLER | Mapas uma mensagem WM_NOTIFY para uma função de manipulador, com base no identificador de controle. |
| NOTIFY_CODE_HANDLER | Mapas uma mensagem WM_NOTIFY para uma função de manipulador, com base no código de notificação. |
| NOTIFY_RANGE_HANDLER | Mapeia um intervalo contíguo de mensagens WM_NOTIFY para uma função de manipulador, com base no identificador de controle. |
As seguintes macros direcionam uma mensagem para um outro mapa da mensagem. Este processo é chamado de "encadeamento".
| Macro | Descrição |
| CHAIN_MSG_MAP | Cadeias à mensagem padrão mapeiam na classe base. |
| CHAIN_MSG_MAP_MEMBER | Cadeias à mensagem padrão mapeiam em um membro de dados da classe. |
| CHAIN_MSG_MAP_ALT | Cadeias a uma mensagem alternativa mapeiam na classe base. |
| CHAIN_MSG_MAP_ALT_MEMBER | Cadeias a uma mensagem alternativa mapeiam em um membro de dados da classe. |
| CHAIN_MSG_MAP_DYNAMIC | Cadeias à mensagem padrão mapeiam na outra classe em tempo de execução. |
Exemplo
classe CMyWindow:...
{
público:
nbsp; ...
BEGIN_MSG_MAP(CMyWindow)
MESSAGE_HANDLER (WM_PAINT, OnPaint)
MESSAGE_HANDLER (WM_SETFOCUS, OnSetFocus)
CHAIN_MSG_MAP(CMyBaseWindow)
END_MSG_MAP()
LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{ ... }
LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{ ... }
}
Quando um CMyWindow objeto recebe um WM_PAINT mensagem, a mensagem é direcionada para CMyWindow::OnPaint para o processamento real. Se OnPaint indica a mensagem requer processamento adicional, a mensagem será então direcionado ao mapa da mensagem padrão emCMyBaseWindow.
Além de mapa da mensagem padrão, você pode definir um mapa da mensagem alternativo com ALT_MSG_MAP. Sempre começa um mapa da mensagem com BEGIN_MSG_MAP. Em seguida, você pode declare mapas de mensagem alternativo subseqüentes. O exemplo a seguir mostra o mapa da mensagem padrão e o mapa da mensagem alternativo um, cada um contendo uma função de manipulador:
BEGI&N_MSG_MAP(CMyClass)
nbsp; MESSAGE_HANDLER (WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
MESSAGE_HANDLER (WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()
O próximo exemplo mostra dois mapas de mensagem alternativo. O mapa da mensagem padrão está vazio.
BEGI&N_MSG_MAP(CMyClass)
ALT_MSG_MAP(1)
nbsp; MESSAGE_HANDLER (WM_PAINT, OnPaint)
MESSAGE_HANDLER (WM_SETFOCUS, OnSetFocus)
ALT_MSG_MAP(2)
MESSAGE_HANDLER (WM_CREATE, OnCreate)
END_MSG_MAP()
A macro END_MSG_MAP marca o final do mapa da mensagem. Observe que sempre é exatamente uma instância de BEGIN_MSG_MAP e END_MSG_MAP.
Para obter mais informações sobre como usar mapas de mensagem no ATL, consulte Mensagem mapas no artigo "Classes de janela do ATL".
Ver também