Mapas de mensagem

Um mapa da mensagem associa uma função de manipulador com uma determinada mensagem, comando ou notificação. Usando mensagem mapa macros do ATL, você pode especificar um mapa da mensagem para uma janela. Os procedimentos de janela em CWindowImpl, CDialogImple CContainedWindow direcionar mensagens da janela de seu mapa da mensagem.

&As funções de manipulador de mensagem aceitam um argumento adicional do tipo BOOLamp; . Esse argumento indica se uma mensagem tiver sido processada, e ele é definido como TRUE por padrão. Uma função de manipulador pode, em seguida, defina o argumento FALSE para indicar que ele não tem Tratado uma mensagem. Neste caso, ATL continuará a procurar por uma função de manipulador mais no mapa da mensagem. Por configuração esse argumento para FALSE , você pode primeiro executar alguma ação em resposta a uma mensagem e, em seguida, permitir que o processamento padrão ou outra função de manipulador para concluir a manipulação de mensagem.

ATL também permite que você para mapas de mensagem de cadeia, que direciona a mensagem Manipulação a um mapa de mensagem definido em outra classe. Por exemplo, você pode implementar comum manipulação de mensagem em uma classe separada para oferecer comportamento uniforme para todos os windows encadeamento a essa classe. Você pode encadear para uma classe base ou um membro de sua classe de dados.

ATL também oferece suporte dinâmico encadeamento, que permite a cadeia para Mapa da mensagem outro objeto em tempo de execução. Para implementar o encadeamento dinâmico, você deve derivar sua classe de CDynamicChain. Em seguida, declare CHAIN_MSG_MAP_DYNAMIC macro no seu mapa da mensagem. CHAIN_MSG_MAP_DYNAMIC requer um número exclusivo que identifica o objeto e o mapa da mensagem à qual você está encadeamento. Você deve definir esse valor exclusivo através de uma chamada para CDynamicChain:: SetChainEntry.

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

Finalmente, ATL oferece suporte a mapas de mensagem alternativo, declarados com a macro ALT_MSG_MAP . Cada mapa da mensagem alternativa é identificado por um número exclusivo, que você passar para ALT_MSG_MAP. Usando a mensagem alternativa mapas, você pode manipular as mensagens de múltiplas janelas em um mapa. Observe que, por padrão, CWindowImpl não usar mapas de mensagem alternativo. Para adicionar esse suporte, substituir o método WindowProc em seu CWindowImpl-classe derivada e chamar ProcessWindowMessage com o identificador de mapa de mensagem.

Index