Roteamento de comando
Sua responsabilidade em trabalhar com comandos é limitada a fazer conexões de mapa de mensagens entre comandos e as respectivas funções de manipulador, uma tarefa para a qual você usa o Assistente de Classe MFC. Você também deve escrever o código para os manipuladores de comando.
As mensagens do Windows geralmente são enviadas para a janela de quadro principal, mas as mensagens de comando são roteadas para outros objetos. A estrutura roteia comandos por meio de uma sequência padrão de objetos de destino de comando, e espera-se que um deles tenha um manipulador para o comando. Cada objeto de destino de comando verifica se o respectivo mapa de mensagens pode lidar com a mensagem de entrada.
Classes de destino de comando diferentes verificam os próprios mapas de mensagens em momentos diferentes. Normalmente, uma classe roteia o comando para certos objetos para dar a eles a primeira chance no comando. Se nenhum desses objetos manipular o comando, a classe original verificará seu próprio mapa de mensagens. Em seguida, se ela mesma não puder fornecer um manipulador, ela poderá rotear o comando para ainda mais destinos de comando. A tabela Rota de comando padrão abaixo mostra como cada uma das classes estrutura essa sequência. A ordem geral na qual um destino de comando roteia um comando é:
Para o objeto de destino de comando filho ativo no momento.
Para ele próprio.
Para outros destinos de comando.
Quanto custa este mecanismo de roteamento Comparado ao que o seu manipulador faz em resposta a um comando, o custo do roteamento é baixo. Tenha em mente que a estrutura gera comandos somente quando o usuário interage com um objeto de interface do usuário.
Roteamento de comando padrão
Quando um objeto desse tipo recebe um comando. . . | Ele oferece a si mesmo e a outros objetos de destino de comando a chance de manipular o comando nesta ordem: |
---|---|
Janela do quadro MDI (CMDIFrameWnd ) |
1. Ativo CMDIChildWnd 2. Esta janela do quadro 3. Aplicativo (objeto CWinApp ) |
Janela do quadro do documento (CFrameWnd ,CMDIChildWnd ) |
1. Exibição ativa 2. Esta janela do quadro 3. Aplicativo (objeto CWinApp ) |
Modo de exibição | 1. Este modo de exibição 2. Documento anexado ao modo de exibição |
Documento | 1. Este documento 2. Modelo de documento anexado ao documento |
Caixa de diálogo | 1. Esta caixa de diálogo 2. Janela que possui a caixa de diálogo 3. Aplicativo (objeto CWinApp ) |
Quando as entradas numeradas na segunda coluna da tabela anterior mencionarem outros objetos, como um documento, consulte o item correspondente na primeira coluna. Por exemplo, ao ler na segunda coluna que o modo de exibição encaminha um comando para o documento, consulte a entrada "Documento" na primeira coluna para encaminhar o roteamento mais adiante.