Partilhar via


Quando manipuladores de atualização são chamados

Suponha que o usuário clique com o mouse no menu Arquivo, que gera uma mensagem WM_INITMENUPOPUP. O mecanismo de atualização da estrutura atualiza coletivamente todos os itens no menu Arquivo antes que o menu seja acionado para que o usuário possa vê-lo.

Para fazer isso, a estrutura roteia comandos de atualização para todos os itens de menu no menu pop-up no roteamento de comando padrão. Os destinos de comando no roteamento têm a oportunidade de atualizar todos os itens de menu fazendo a correspondência entre o comando de atualização e uma entrada de mapa de mensagens apropriada (do formulário ON_UPDATE_COMMAND_UI) e chamando uma função de "manipulador de atualização". Assim, para um menu com seis itens de menu, seis comandos de atualização são enviados. Se existir um manipulador de atualização para a ID de comando do item de menu, ele será chamado para fazer a atualização. Caso contrário, a estrutura verificará a existência de um manipulador para essa ID de comando e habilitará ou desabilitará o item de menu conforme apropriado.

Se a estrutura não encontrar uma entrada ON_UPDATE_COMMAND_UI durante o roteamento de comando, ela habilitará automaticamente o objeto da interface do usuário se houver uma entrada ON_COMMAND em algum lugar com a mesma ID de comando. Caso contrário, ele desabilitará o objeto da interface do usuário. Portanto, para garantir que um objeto da interface do usuário seja habilitado, forneça um manipulador para o comando que o objeto gera ou forneça um manipulador de atualização para ele. Consulte a figura no tópico Objetos da interface do usuário e IDs de comando.

É possível desabilitar a desabilitação padrão de objetos da interface do usuário. Para obter mais informações, consulte o membro m_bAutoMenuEnable da classe CFrameWnd na Referência do MFC.

A inicialização do menu é automática na estrutura, ocorrendo quando o aplicativo recebe uma mensagem WM_INITMENUPOPUP. Durante o loop ocioso, a estrutura pesquisa o roteamento de comando para manipuladores de atualização de botão da mesma forma que o faz para menus.

Confira também

Como atualizar objetos da interface do usuário