Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Durante o tratamento de mensagens, verificar o mapa de mensagens de uma classe não é o fim da história do mapa de mensagens. O que acontece se a classe CMyView (derivada de CView) não tiver nenhuma entrada correspondente para uma mensagem?
Tenha em mente que CView, a classe base de CMyView, é derivada, por sua vez, de CWnd. Assim CMyViewé um CView e é um CWnd. Cada uma dessas classes tem seu próprio mapa de mensagens. A figura abaixo mostra a relação hierárquica das classes, mas tenha em mente que um CMyView objeto é um único objeto que tem as características de todas as três classes.
Uma hierarquia de visualização
Se uma mensagem não puder ser correspondida no mapa de mensagens da classe CMyView, a estrutura também pesquisará o mapa de mensagens de sua classe base imediata. A BEGIN_MESSAGE_MAP macro no início do mapa de mensagens especifica dois nomes de classe como seus argumentos:
BEGIN_MESSAGE_MAP(CMyView, CView)
O primeiro argumento nomeia a classe à qual o mapa de mensagens pertence. O segundo argumento fornece uma conexão com a classe base imediata, neste caso CView, para que a estrutura também possa pesquisar seu mapa de mensagens.
Os manipuladores de mensagens fornecidos em uma classe base são, portanto, herdados pela classe derivada. Isso é muito semelhante às funções normais de membro virtual sem a necessidade de tornar virtuais todas as funções de membro do manipulador.
Se nenhum manipulador for encontrado em qualquer um dos mapas de mensagem de classe base, o processamento padrão da mensagem será executado. Se a mensagem for um comando, a estrutura a encaminha para o próximo destino de comando. Se for uma mensagem padrão do Windows, a mensagem é passada para o procedimento de janela padrão apropriado.
Para acelerar a correspondência de mapa de mensagens, a estrutura armazena em cache correspondências recentes com base na probabilidade de receber a mesma mensagem novamente. Uma consequência disso é que a estrutura processa mensagens não tratadas de forma bastante eficiente. Os mapas de mensagens também são mais eficientes em termos de espaço do que as implementações que usam funções virtuais.