Partilhar via


Mapas de mensagem (ATL)

Um MAP da mensagem associa uma função de manipulador com uma determinada mensagem, comando ou notificação.Por meio macros de MAP da mensagem, você pode especificar um MAP da mensagem para uma janela.Os procedimentos de janela de CWindowImpl, CDialogImpl, e CContainedWindowT direcione as mensagens da janela para MAP da mensagem.

The mensagem funções do manipulador aceitar um argumento adicional do tipo BOOL&. Esse argumento indica se uma mensagem tiver sido processada e está definido como TRUE Por padrão. Uma função de manipulador pode então conjunto o argumento como FALSE para indicar que ele não tem tratado uma mensagem. Nesse caso, ATL continuará a procurar uma função de manipulador ainda mais no MAP da mensagem.Definindo este argumento como FALSE, você pode primeiro realizar alguma ação em resposta a uma mensagem e, em seguida, permitir o processamento padrão ou outra função de manipulador para manipular a mensagem de Concluir.

Mapas de mensagens encadeadas

ATL também permite que você cadeia mapas de mensagem, que direciona a mensagem de manipulação de um MAP da mensagem definido em outra classe.Por exemplo, você pode implementar mensagem comum lidar com uma classe separada para oferecer comportamento uniforme para todas as janelas do encadeamento a essa classe.Você pode encadear para uma classe base ou um membro de dados de sua classe.

ATL também oferece suporte ao encadeamento dinâmico, que permite à cadeia do MAP da mensagem do objeto em time de execução.Para implementar o encadeamento dinâmico, você deve derivar a classe de CDynamicChain.Em seguida, declare o CHAIN_MSG_MAP_DYNAMIC macro em MAP da mensagem.CHAIN_MSG_MAP_DYNAMIC requer um número exclusivo que identifica o objeto e o MAP da mensagem para o qual esteja encadeando. Você deve definir esse valor exclusivo por meio de uma telefonar de CDynamicChain::SetChainEntry.

Você pode encadear a qualquer classe que declara um MAP da mensagem, desde que a classe deriva de CMessageMap.CMessageMap permite que um objeto para expor seus mapas de mensagem a outros objetos. Observe que CWindowImpl já deriva de CMessageMap.

Mapas de mensagem alternativo

Por fim, ATL suporta mensagem alternativo mapas, declarados com o ALT_MSG_MAP macro.Cada MAP da mensagem alternativa é identificado por um número exclusivo, que você passar para ALT_MSG_MAP. Usar alternativas de mensagens mapeia, você pode manipular as mensagens de várias janelas em um MAP.Observe que, por padrão, CWindowImpl não usa mapas de mensagem alternativo. Para adicionar esse suporte, substitua o WindowProc método no seu CWindowImpl-classe derivada e telefonar ProcessWindowMessage com o identificador de MAP da mensagem.

Consulte também

Referência

Implementando uma janela