Partilhar via


TN022: Implementação de comandos padrão

Observação

A nota técnica a seguir não foi atualizada desde que foi incluída pela primeira vez na documentação on-line. Como resultado, alguns procedimentos e tópicos podem estar desatualizados ou incorretos. Para obter as informações mais recentes, recomenda-se que pesquise o tópico de interesse no índice de documentação online.

Esta nota descreve as implementações de comando padrão fornecidas pelo MFC 2.0. Leia a Nota Técnica 21 primeiro porque ela descreve os mecanismos usados para implementar muitos dos comandos padrão.

Esta descrição pressupõe o conhecimento das arquiteturas MFC, APIs e práticas comuns de programação. São descritas APIs "somente implementação" documentadas e não documentadas. Este não é um lugar para começar a aprender sobre os recursos ou como programar no MFC. Consulte Visual C++ para obter mais informações gerais e detalhes de APIs documentadas.

O problema

MFC define muitos IDs de comando padrão no arquivo de cabeçalho AFXRES.H. O suporte da estrutura para esses comandos varia. Entender onde e como as classes de estrutura lidam com esses comandos não apenas mostrará como a estrutura funciona internamente, mas fornecerá informações úteis sobre como personalizar as implementações padrão e ensinará algumas técnicas para implementar seus próprios manipuladores de comando.

Conteúdo desta Nota Técnica

Cada ID de comando é descrito em duas seções:

  • O título: o nome simbólico do ID do comando (por exemplo, ID_FILE_SAVE) seguido da finalidade do comando (por exemplo, "salva o documento atual") separado por dois pontos.

  • Um ou mais parágrafos descrevendo quais classes implementam o comando e o que a implementação padrão faz

A maioria das implementações de comando padrão são pré-configuradas no mapa de mensagens da classe base do framework. Existem algumas implementações de comando que exigem fiação explícita em sua classe derivada. Estes são descritos em "Nota". Se você escolher as opções corretas no AppWizard, esses manipuladores padrão serão conectados para você no aplicativo esqueleto gerado.

Convenção de nomenclatura

Os comandos padrão seguem uma convenção de nomenclatura simples que recomendamos que você use, se possível. A maioria dos comandos padrão está localizada em locais padrão na barra de menus de um aplicativo. O nome simbólico do comando começa com "ID_" seguido pelo nome do menu pop-up padrão, seguido pelo nome do item de menu. O nome simbólico está em maiúsculas com quebras de palavras sublinhadas. Para comandos que não têm nomes de itens de menu padrão, um nome de comando lógico é definido começando com "ID_" (por exemplo, ID_NEXT_PANE).

Usamos o prefixo "ID_" para indicar comandos que são projetados para serem vinculados a itens de menu, botões da barra de ferramentas ou outros objetos de interface do usuário de comando. Os manipuladores que lidam com comandos "ID_" devem utilizar os mecanismos ON_COMMAND e ON_UPDATE_COMMAND_UI da arquitetura de comandos MFC.

Recomendamos que você use o prefixo padrão "IDM_" para itens de menu que não seguem a arquitetura de comando e precisam de código específico de menu para habilitá-los e desativá-los. É claro que o número de comandos específicos do menu deve ser pequeno, uma vez que seguir a arquitetura de comandos MFC não só torna os manipuladores de comandos mais poderosos (uma vez que eles trabalharão com barras de ferramentas), mas torna o código do manipulador de comandos reutilizável.

Intervalos de ID

Consulte a Nota Técnica 20 para obter mais detalhes sobre o uso de intervalos de identificação no MFC.

Os comandos padrão MFC estão no intervalo 0xE000 a 0xEFFF. Não confie nos valores específicos desses IDs, pois eles estão sujeitos a alterações em versões futuras da biblioteca.

Seu aplicativo deve definir seus comandos no intervalo 0x8000 para 0xDFFF.

IDs de comando padrão

Para cada ID de comando, há uma string de mensagem padrão que pode ser encontrada no arquivo PROMPTS.RC. O ID da cadeia de caracteres para esse prompt de menu deve ser o mesmo que para o ID do comando.

  • ID_FILE_NEW Cria um documento novo/vazio.

    Observação

    Você deve conectá-lo ao CWinAppmapa de mensagens da sua classe derivada para habilitar essa funcionalidade.

    CWinApp::OnFileNew implementa esse comando de forma diferente, dependendo do número de modelos de documento no aplicativo. Se houver apenas um CDocTemplate, CWinApp::OnFileNew criará um novo documento desse tipo, bem como a classe de quadro e visualização adequada.

    Se houver mais de um CDocTemplate, CWinApp::OnFileNew solicitará ao usuário uma caixa de diálogo (AFX_IDD_NEWTYPEDLG) permitindo que ele selecione qual tipo de documento usar. O selecionado CDocTemplate é usado para criar o documento.

    Uma personalização comum do ID_FILE_NEW é fornecer uma escolha diferente e mais gráfica de tipos de documentos. Neste caso, você pode implementar o seu próprio CMyApp::OnFileNew e colocá-lo em seu mapa de mensagens em vez de CWinApp::OnFileNew. Não há necessidade de chamar a implementação da classe base.

    Outra personalização comum do ID_FILE_NEW é fornecer um comando separado para criar um documento de cada tipo. Nesse caso, você deve definir novos IDs de comando, por exemplo, ID_FILE_NEW_CHART e ID_FILE_NEW_SHEET.

  • ID_FILE_OPEN Abre um documento existente.

    Observação

    Você deve conectá-lo ao CWinAppmapa de mensagens da sua classe derivada para habilitar essa funcionalidade.

    CWinApp::OnFileOpen tem uma implementação muito simples de chamada CWinApp::DoPromptFileName seguida de CWinApp::OpenDocumentFile com o nome ou caminho do arquivo a abrir. A CWinApp rotina DoPromptFileName de implementação exibe a caixa de diálogo FileOpen padrão e a preenche com as extensões de arquivo obtidas dos modelos de documento atuais.

    Uma personalização comum do ID_FILE_OPEN é personalizar a caixa de diálogo FileOpen ou adicionar filtros de arquivo adicionais. A maneira recomendada de personalizar isso é substituir a implementação padrão por sua própria caixa de diálogo FileOpen e chamar CWinApp::OpenDocumentFile com o nome do arquivo ou caminho do documento. Não há necessidade de chamar a classe base.

  • ID_FILE_CLOSE Fecha o documento atualmente aberto.

    CDocument::OnFileClose chama CDocument::SaveModified para solicitar que o usuário salve o documento se ele tiver sido modificado e, em seguida, chama OnCloseDocument. Toda a lógica de fechamento, inclusive a destruição do documento, é feita na OnCloseDocument rotina.

    Observação

    ID_FILE_CLOSE atua de forma diferente de uma mensagem de WM_CLOSE ou de um comando do sistema SC_CLOSE enviado para a janela do quadro de documentos. Fechar uma janela fechará o documento somente se essa for a última janela de quadro mostrando o documento. Fechar o documento com ID_FILE_CLOSE não só fechará o documento, mas fechará todas as janelas de quadro que mostram o documento.

  • ID_FILE_SAVE Salva o documento atual.

    A implementação usa uma rotina auxiliar CDocument::DoSave, que é utilizada tanto para OnFileSave como para OnFileSaveAs. Se você salvar um documento que não tenha sido salvo antes (ou seja, que não tenha um nome de caminho, como no caso de FileNew) ou que tenha sido lido de um documento somente leitura, a OnFileSave lógica agirá como o comando ID_FILE_SAVE_AS e solicitará que o usuário forneça um novo nome de arquivo. O processo real de abrir o arquivo e fazer o salvamento é feito através da função OnSaveDocumentvirtual.

    Há duas razões comuns para personalizar ID_FILE_SAVE. Para documentos que não são salvos, basta remover os itens de menu ID_FILE_SAVE e os botões da barra de ferramentas da interface do usuário. Certifique-se também de nunca alterar o documento (ou seja, nunca ligue CDocument::SetModifiedFlag) e que o framework nunca provocará o salvamento do documento. Para documentos que salvam em algum lugar diferente de um arquivo de disco, defina um novo comando para essa operação.

    No caso de um COleServerDoc, ID_FILE_SAVE é usado tanto para salvar arquivos (para documentos normais) quanto para atualização de arquivos (para documentos incorporados).

    Se os dados do documento estiverem armazenados em arquivos de disco individuais, mas você não quiser usar a implementação de serialização padrão CDocument , deverá substituir CDocument::OnSaveDocument em vez de OnFileSave.

  • ID_FILE_SAVE_AS Salva o documento atual em um nome de arquivo diferente.

    A CDocument::OnFileSaveAs implementação usa a mesma CDocument::DoSave rotina auxiliar do OnFileSave. O OnFileSaveAs comando é tratado da mesma forma ID_FILE_SAVE se os documentos não tivessem um nome de arquivo antes da gravação. COleServerDoc::OnFileSaveAs implementa a lógica para salvar um arquivo de dados de documento normal ou para salvar um documento de servidor que representa um objeto OLE incorporado em algum outro aplicativo como um arquivo separado.

    Se você personalizar a lógica do ID_FILE_SAVE, provavelmente desejará personalizar ID_FILE_SAVE_AS de forma semelhante ou a operação de "Salvar como" pode não se aplicar ao seu documento. Você pode remover o item de menu da barra de menus se não for necessário.

  • ID_FILE_SAVE_COPY_AS Salva uma cópia do documento atual com um novo nome.

    A COleServerDoc::OnFileSaveCopyAs implementação é muito semelhante ao CDocument::OnFileSaveAs, exceto que o objeto do documento não é "anexado" ao arquivo subjacente após o salvamento. Ou seja, se o documento na memória foi "modificado" antes da gravação, ele ainda é "modificado". Além disso, esse comando não tem efeito sobre o nome do caminho ou título armazenado no documento.

  • ID_FILE_UPDATE Notifica o contêiner para salvar um documento incorporado.

    A COleServerDoc::OnUpdateDocument implementação simplesmente notifica o contêiner de que a incorporação deve ser salva. Em seguida, o contêiner chama as APIs OLE apropriadas para salvar o objeto incorporado.

  • ID_FILE_PAGE_SETUP Invoca uma caixa de diálogo de configuração/layout de página específica do aplicativo.

    Atualmente, não há um padrão para essa caixa de diálogo e a estrutura não tem implementação padrão desse comando.

    Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.

  • ID_FILE_PRINT_SETUP Invoque a caixa de diálogo Configuração de impressão padrão.

    Observação

    Você deve conectá-lo ao CWinAppmapa de mensagens da sua classe derivada para habilitar essa funcionalidade.

    Este comando invoca a caixa de diálogo de configuração de impressão padrão que permite ao usuário personalizar a impressora e as configurações de impressão para pelo menos este documento ou no máximo todos os documentos neste aplicativo. Você deve usar o Painel de Controle para alterar as configurações padrão da impressora para todo o sistema.

    CWinApp::OnFilePrintSetup tem uma implementação muito simples criando um CPrintDialog objeto e chamando a CWinApp::DoPrintDialog função de implementação. Isso define a configuração padrão da impressora do aplicativo.

    A necessidade comum de personalizar esse comando é permitir configurações de impressora por documento, que devem ser armazenadas com o documento quando salvo. Para fazer isso, você deve adicionar um manipulador de mapa de mensagem em sua CDocument classe que cria um CPrintDialog objeto, inicializa-o com os atributos de impressora apropriados (geralmente hDevMode e hDevNames), chama o CPrintDialog::DoModale salva as configurações de impressora alteradas. Para uma implementação robusta, você deve olhar para a implementação de CWinApp::DoPrintDialog para detetar erros e de CWinApp::UpdatePrinterSelection para lidar com predefinições adequadas e rastrear alterações de impressora em todo o sistema.

  • ID_FILE_PRINT Impressão padrão do documento atual

    Observação

    Você deve conectá-lo ao CViewmapa de mensagens da sua classe derivada para habilitar essa funcionalidade.

    Este comando imprime o documento atual ou, mais corretamente, inicia o processo de impressão, que envolve invocar a caixa de diálogo de impressão padrão e executar o mecanismo de impressão.

    CView::OnFilePrint implementa este comando e o loop de impressão principal. Ele chama o virtual CView::OnPreparePrinting para avisar o usuário com a caixa de diálogo de impressão. Em seguida, prepara o DC de saída para ir para a impressora, abre a caixa de diálogo de progresso de impressão (AFX_IDD_PRINTDLG) e envia o StartDoc escape para a impressora. CView::OnFilePrint também contém o loop de impressão orientado para a página principal. Para cada página, ele chama o método virtual CView::OnPrepareDC, seguido de uma sequência de escape StartPage, e chama o método virtual CView::OnPrint para essa página. Quando concluído, a função virtual CView::OnEndPrinting é chamada e a caixa de diálogo de progresso da impressão é encerrada.

    A arquitetura de impressão MFC foi projetada para se conectar de muitas maneiras diferentes para impressão e visualização de impressão. Normalmente, encontrará as várias CView funções que podem ser substituídas adequadas para quaisquer tarefas de impressão orientadas por página. Somente no caso de uma aplicação que usa a impressora para saída não orientada por página, necessitará de substituir a implementação ID_FILE_PRINT.

  • ID_FILE_PRINT_PREVIEW Insira o modo de visualização de impressão para o documento atual.

    Observação

    Você deve conectá-lo ao CViewmapa de mensagens da sua classe derivada para habilitar essa funcionalidade.

    CView::OnFilePrintPreview Inicia o modo de visualização preliminar da impressão, chamando a função auxiliar documentada CView::DoPrintPreview. CView::DoPrintPreview é o motor principal para o loop de visualização de impressão, assim como OnFilePrint é o motor principal para o loop de impressão.

    A operação de visualização de impressão pode ser personalizada de várias maneiras, passando diferentes parâmetros para DoPrintPreview. Consulte a Nota Técnica 30, que discute alguns dos detalhes da visualização de impressão e como personalizá-la.

  • ID_FILE_MRU_FILE1... FILE16 Um intervalo de IDs de comando para a lista File MRU.

    CWinApp::OnUpdateRecentFileMenu é um manipulador de interface para comandos de atualização, representando um dos usos mais avançados do mecanismo ON_UPDATE_COMMAND_UI. No recurso de menu, você só precisa definir um único item de menu com ID ID_FILE_MRU_FILE1. Esse item de menu permanece inicialmente desativado.

    À medida que a lista MRU cresce, mais itens de menu são adicionados à lista. A implementação padrão CWinApp tem como padrão o limite para os quatro arquivos mais usados recentemente. Você pode alterar o padrão chamando CWinApp::LoadStdProfileSettings com um valor maior ou menor. A lista MRU é armazenada no ficheiro .INI da aplicação. A lista é carregada na função da aplicação InitInstance se você chamar LoadStdProfileSettings, e é salva quando a aplicação é encerrada. O manipulador de interface do usuário do comando de atualização MRU também converterá caminhos absolutos em caminhos relativos para exibição no menu de arquivos.

    CWinApp::OnOpenRecentFile é o manipulador de ON_COMMAND que executa o comando real. Ele simplesmente obtém o nome do arquivo da lista MRU e chama CWinApp::OpenDocumentFile, que faz todo o trabalho de abrir o arquivo e atualizar a lista MRU.

    A personalização deste manipulador de comandos não é recomendada.

  • ID_EDIT_CLEAR Limpa a seleção atual

    Atualmente não há nenhuma implementação padrão para este comando. Você deve implementar isso para cada CViewclasse derivada.

    CEditView fornece uma implementação deste comando usando CEdit::Clear. O comando será desativado se não houver nenhuma seleção atual.

    Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.

  • ID_EDIT_CLEAR_ALL Limpa todo o documento.

    Atualmente não há nenhuma implementação padrão para este comando. Você deve implementar isso para cada CViewclasse derivada.

    Se você optar por implementar esse comando, recomendamos que você use essa ID de comando. Consulte o exemplo de tutorial MFC SCRIBBLE para obter um exemplo de implementação.

  • ID_EDIT_COPY Copia a seleção atual para a Área de Transferência.

    Atualmente não há nenhuma implementação padrão para este comando. Você deve implementar isso para cada CViewclasse derivada.

    CEditView fornece uma implementação deste comando, que copia o texto que está atualmente selecionado para a Área de Transferência como CF_TEXT usando CEdit::Copy. O comando será desativado se não houver nenhuma seleção atual.

    Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.

  • ID_EDIT_CUT Corta a seleção atual para a Área de Transferência.

    Atualmente não há nenhuma implementação padrão para este comando. Você deve implementar isso para cada CViewclasse derivada.

    CEditView fornece uma implementação deste comando, que recorta o texto atualmente selecionado para a Área de Transferência no formato CF_TEXT utilizando CEdit::Cut. O comando será desativado se não houver nenhuma seleção atual.

    Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.

  • ID_EDIT_FIND Inicia a operação de localização e abre a caixa de diálogo de encontrar não modal.

    Atualmente não há nenhuma implementação padrão para este comando. Você deve implementar isso para cada CViewclasse derivada.

    CEditView Fornece uma implementação desse comando, que chama a função OnEditFindReplace auxiliar de implementação para usar e armazenar as configurações anteriores de localizar/substituir em variáveis de implementação privadas. A CFindReplaceDialog classe é usada para gerir o diálogo não modal para interagir com o utilizador.

    Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.

  • ID_EDIT_PASTE Insere o conteúdo atual da Área de Transferência.

    Atualmente não há nenhuma implementação padrão para este comando. Você deve implementar isso para cada CViewclasse derivada.

    CEditView fornece uma implementação deste comando, que copia os dados atuais da Área de Transferência substituindo o texto selecionado usando CEdit::Paste. O comando será desativado se não houver CF_TEXT na Área de Transferência.

    COleClientDoc fornece apenas um manipulador de interface de utilizador para o comando de atualização. Se o clipboard não contiver um item/objeto OLE incorporável, o comando será desativado. Você é responsável por escrever o manipulador para o comando efetivo para fazer a colagem efetiva. Se o seu aplicativo OLE também puder colar outros formatos, deverá fornecer um manipulador próprio da interface de utilizador para o comando de atualização na sua vista ou documento (ou seja, em algum lugar antes do COleClientDoc no percurso do comando).

    Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.

    Para substituir a implementação OLE padrão, use COleClientItem::CanPaste.

  • ID_EDIT_PASTE_LINK Insere um link do conteúdo atual da Área de Transferência.

    Atualmente não há nenhuma implementação padrão para este comando. Você deve implementar isso para cada CViewclasse derivada.

    COleDocument fornece apenas um manipulador de interface de utilizador para o comando de atualização. Se a Área de Transferência não contiver objeto/item OLE associado, o comando será desativado. Você é responsável por escrever o manipulador para o comando efetivo para fazer a colagem efetiva. Se o seu aplicativo OLE também puder colar outros formatos, deverá fornecer um manipulador próprio da interface de utilizador para o comando de atualização na sua vista ou documento (ou seja, em algum lugar antes do COleDocument no percurso do comando).

    Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.

    Para substituir a implementação OLE padrão, use COleClientItem::CanPasteLink.

  • ID_EDIT_PASTE_SPECIAL Insere o conteúdo atual da Área de Transferência com opções.

    Atualmente não há nenhuma implementação padrão para este comando. Você deve implementar isso para cada CViewclasse derivada. O MFC não disponibiliza esta caixa de diálogo.

    Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.

  • ID_EDIT_REPEAT Repete a última operação.

    Atualmente não há nenhuma implementação padrão para este comando. Você deve implementar isso para cada CViewclasse derivada.

    CEditView fornece uma implementação deste comando para repetir a última operação de localização. As variáveis de implementação privadas para a última descoberta são usadas. O comando será desativado se não for possível tentar uma localização.

    Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.

  • ID_EDIT_REPLACE Inicia a operação de substituição, abre a caixa de diálogo de substituição sem modal.

    Atualmente não há nenhuma implementação padrão para este comando. Você deve implementar isso para cada CViewclasse derivada.

    CEditView Fornece uma implementação desse comando, que chama a função OnEditFindReplace auxiliar de implementação para usar e armazenar as configurações anteriores de localizar/substituir em variáveis de implementação privadas. A classe CFindReplaceDialog é usada para gerir a caixa de diálogo não modal que solicita ao utilizador.

    Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.

  • ID_EDIT_SELECT_ALL Seleciona todo o documento.

    Atualmente não há nenhuma implementação padrão para este comando. Você deve implementar isso para cada CViewclasse derivada.

    CEditView fornece uma implementação deste comando, que seleciona todo o texto no documento. O comando será desativado se não houver texto para selecionar.

    Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.

  • ID_EDIT_UNDO Desfaz a última operação.

    Atualmente não há nenhuma implementação padrão para este comando. Você deve implementar isso para cada CViewclasse derivada.

    CEditView fornece uma implementação desse comando, usando CEdit::Undo. O comando será desativado se CEdit::CanUndo retornar FALSE.

    Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.

  • ID_EDIT_REDO Refaz a última operação.

    Atualmente não há nenhuma implementação padrão para este comando. Você deve implementar isso para cada CViewclasse derivada.

    Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.

  • ID_WINDOW_NEW Abre outra janela no documento ativo.

    CMDIFrameWnd::OnWindowNew Implementa esse poderoso recurso usando o modelo de documento do documento atual para criar outro quadro contendo outra exibição do documento atual.

    Como na maioria dos comandos de menu da janela de interface de documentos múltiplos (MDI), o comando é desativado se não houver nenhuma janela subordinada MDI ativa.

    A personalização deste manipulador de comandos não é recomendada. Se você deseja fornecer um comando que cria visualizações adicionais ou janelas de quadro, provavelmente será melhor inventar seu próprio comando. Você pode clonar o código de CMDIFrameWnd::OnWindowNew e modificá-lo para as classes de estrutura e de vista de sua preferência.

  • ID_WINDOW_ARRANGE Organiza ícones na parte inferior de uma janela MDI.

    CMDIFrameWnd implementa esse comando MDI padrão em uma função OnMDIWindowCmdauxiliar de implementação. Este auxiliar mapeia IDs de comando para mensagens MDI do Windows e, portanto, pode compartilhar muito código.

    Como acontece com a maioria dos comandos de menu MDI Window, o comando é desativado se não houver nenhuma janela filha MDI ativa.

    A personalização deste manipulador de comandos não é recomendada.

  • ID_WINDOW_CASCADE Organizar janelas em cascata para que se sobreponham.

    CMDIFrameWnd implementa esse comando MDI padrão em uma função OnMDIWindowCmdauxiliar de implementação. Este auxiliar mapeia IDs de comando para mensagens MDI do Windows e, portanto, pode compartilhar muito código.

    Como acontece com a maioria dos comandos de menu MDI Window, o comando é desativado se não houver nenhuma janela filha MDI ativa.

    A personalização deste manipulador de comandos não é recomendada.

  • ID_WINDOW_TILE_HORZ Janelas de azulejos horizontalmente.

    Este comando é implementado da mesma forma CMDIFrameWnd ID_WINDOW_CASCADE, exceto que uma mensagem MDI diferente do Windows é usada para a operação.

    Você deve escolher a orientação de bloco padrão para seu aplicativo. Você pode fazer isso alterando o identificador do item de menu "Mosaico" da janela para ID_WINDOW_TILE_HORZ ou ID_WINDOW_TILE_VERT.

  • ID_WINDOW_TILE_VERT Janelas de azulejos verticalmente.

    Este comando é implementado da mesma forma CMDIFrameWnd ID_WINDOW_CASCADE, exceto que uma mensagem MDI diferente do Windows é usada para a operação.

    Você deve escolher a orientação de bloco padrão para seu aplicativo. Você pode fazer isso alterando o identificador do item de menu "Mosaico" da janela para ID_WINDOW_TILE_HORZ ou ID_WINDOW_TILE_VERT.

  • ID_WINDOW_SPLIT Interface de teclado para divisor.

    CView manipula este comando para a CSplitterWnd implementação. Se a vista fizer parte de uma janela de divisão, este comando será delegado à função de implementação CSplitterWnd::DoKeyboardSplit. Isso colocará o divisor em um modo que permitirá aos usuários do teclado dividir ou desdividir uma janela do divisor.

    Este comando será desativado se a exibição não estiver em um divisor.

    A personalização deste manipulador de comandos não é recomendada.

  • ID_APP_ABOUT Invoca a caixa de diálogo Sobre.

    Não há uma implementação padrão para a caixa de diálogo 'Sobre' de um aplicativo. O aplicativo padrão criado pelo AppWizard criará uma classe de diálogo personalizada para seu aplicativo e a usará como sua caixa Sobre. AppWizard também escreverá o tratador trivial de comandos que trata este comando e invoca o diálogo.

    Você quase sempre implementará esse comando.

  • ID_APP_EXIT Saia do aplicativo.

    CWinApp::OnAppExit Manipula esse comando enviando uma mensagem WM_CLOSE para a janela principal do aplicativo. O encerramento padrão do aplicativo (solicitando confirmação para arquivos não guardados, entre outros) é tratado pela implementação CFrameWnd.

    A personalização deste manipulador de comandos não é recomendada. Recomenda-se substituir ou modificar CWinApp::SaveAllModified ou a lógica de fechamento CFrameWnd.

    Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.

  • Lista tópicos de Ajuda do ficheiro .HLP.

    Observação

    Você deve conectá-lo ao CWinAppmapa de mensagens da sua classe derivada para habilitar essa funcionalidade.

    CWinApp::OnHelpIndex lida com este comando trivialmente chamando CWinApp::WinHelp.

    A personalização deste manipulador de comandos não é recomendada.

  • ID_HELP_USING Exibe ajuda sobre como usar a Ajuda.

    Observação

    Você deve conectá-lo ao CWinAppmapa de mensagens da sua classe derivada para habilitar essa funcionalidade.

    CWinApp::OnHelpUsing lida com este comando trivialmente chamando CWinApp::WinHelp.

    A personalização deste manipulador de comandos não é recomendada.

  • ID_CONTEXT_HELP Entra em modo de ajuda SHIFT-F1.

    Observação

    Você deve conectá-lo ao CWinAppmapa de mensagens da sua classe derivada para habilitar essa funcionalidade.

    CWinApp::OnContextHelp Manipula este comando definindo o cursor do modo de ajuda, inserindo um loop modal e aguardando que o usuário selecione uma janela para obter ajuda. Consulte a Nota Técnica 28 para obter mais detalhes sobre a implementação da Ajuda do MFC.

    A personalização deste manipulador de comandos não é recomendada.

  • ID_HELP Dá ajuda sobre o contexto atual

    Observação

    Você deve conectá-lo ao CWinAppmapa de mensagens da sua classe derivada para habilitar essa funcionalidade.

    CWinApp::OnHelp trata este comando obtendo o contexto de ajuda adequado para o contexto atual da aplicação. Este recurso trata de ajuda F1 simples, ajuda em caixas de diálogo e assim por diante. Consulte a Nota Técnica 28 para obter mais detalhes sobre a implementação da ajuda do MFC.

    A personalização deste manipulador de comandos não é recomendada.

  • ID_DEFAULT_HELP Exibe a ajuda padrão para o contexto atual

    Observação

    Você deve conectá-lo ao CWinAppmapa de mensagens da sua classe derivada para habilitar essa funcionalidade.

    Este comando geralmente é mapeado para CWinApp::OnHelpIndex.

    Um manipulador de comando diferente pode ser fornecido se uma distinção entre a Ajuda padrão e o índice da Ajuda for desejada.

  • ID_NEXT_PANE Vai para o próximo painel

    CView manipula este comando para a CSplitterWnd implementação. Se a vista fizer parte de uma janela de divisão, este comando será delegado à função de implementação CSplitterWnd::OnNextPaneCmd. Isso moverá a vista ativa para o próximo painel no separador.

    Este comando está desativado se a visualização não estiver em um divisor ou se não houver um próximo painel para navegar.

    A personalização deste manipulador de comandos não é recomendada.

  • ID_PREV_PANE Vai para o painel anterior

    CView manipula este comando para a CSplitterWnd implementação. Se a vista fizer parte de uma janela de divisão, este comando será delegado à função de implementação CSplitterWnd::OnNextPaneCmd. Isso moverá o modo de exibição ativo para o painel anterior no divisor.

    Este comando está desativado se a exibição não estiver em um divisor de janelas ou não houver qualquer painel anterior para o qual ir.

    A personalização deste manipulador de comandos não é recomendada.

  • ID_OLE_INSERT_NEW Insere um novo objeto OLE

    Atualmente não há nenhuma implementação padrão para este comando. Você deve implementar isso para sua CViewclasse derivada para inserir um novo item/objeto OLE na seleção atual.

    Todos os aplicativos cliente OLE devem implementar esse comando. AppWizard, com a opção OLE, criará uma implementação de esqueleto na sua classe de visualização que você terá que concluir.

    Consulte o exemplo de exemplo OCLIENT MFC OLE para obter uma implementação completa deste comando.

  • ID_OLE_EDIT_LINKS Edita os links OLE

    COleDocument manipula esse comando usando a implementação fornecida pelo MFC da caixa de diálogo de links OLE padrão. A implementação desta caixa de diálogo é acessada através da COleLinksDialog classe. Se o documento atual não contiver links, o comando será desativado.

    A personalização deste manipulador de comandos não é recomendada.

  • ID_OLE_VERB_FIRST... LAST Um intervalo de ID para verbos OLE

    COleDocument usa esse intervalo de ID de comando para os verbos suportados pelo item/objeto OLE selecionado no momento. Este deve ser um intervalo, uma vez que um determinado tipo de item/objeto OLE pode suportar zero ou mais verbos personalizados. No menu do seu aplicativo, você deve ter um item de menu com a ID de ID_OLE_VERB_FIRST. Quando o programa é executado, o menu será atualizado com a descrição do verbo do menu apropriado (ou menu pop-up com muitos verbos). A gestão do menu OLE é realizada por AfxOleSetEditMenu no manipulador da interface de utilizador do comando de atualização para este comando.

    Não há manipuladores de comando explícitos para lidar com cada ID de comando nesse intervalo. COleDocument::OnCmdMsg é substituído para intercetar todos os IDs de comando nesse intervalo, transformá-los em números verbais baseados em zero e iniciar o servidor para esse verbo (usando COleClientItem::DoVerb).

    A personalização ou outro uso desse intervalo de ID de comando não é recomendado.

  • ID_VIEW_TOOLBAR Ativa e desativa a barra de ferramentas

    CFrameWnd manipula esse comando e o manipulador de interface do usuário update-command para alternar o estado visível da barra de ferramentas. A barra de ferramentas deve ser uma janela secundária do quadro com ID de janela secundária de AFX_IDW_TOOLBAR. O manipulador de comandos realmente alterna a visibilidade da janela da barra de ferramentas. CFrameWnd::RecalcLayout é usado para redesenhar a janela de quadro com a barra de ferramentas em seu novo estado. O manipulador de UI do comando de atualização verifica o item de menu quando a barra de ferramentas está visível.

    A personalização deste manipulador de comandos não é recomendada. Se desejar adicionar barras de ferramentas adicionais, você desejará clonar e modificar o manipulador de comando e o manipulador de interface do usuário update-command para esse comando.

  • ID_VIEW_STATUS_BAR Ativa e desativa a barra de status

    Este comando é implementado em CFrameWnd de forma semelhante ao ID_VIEW_TOOLBAR, exceto por usar um ID de janela secundária diferente (AFX_IDW_STATUS_BAR).

Update-Only manipuladores de comando

Vários IDs de comando padrão são usados como indicadores em barras de status. Eles usam o mesmo mecanismo de manipulação da interface do usuário do comando de atualização para exibir seu estado visual atual durante o tempo ocioso do aplicativo. Como não podem ser selecionados pelo utilizador (ou seja, não é possível interagir com um painel da barra de estado), não faz sentido ter um manipulador ON_COMMAND para este ID de comando.

  • ID_INDICATOR_CAPS : Indicador de bloqueio CAP.

  • ID_INDICATOR_NUM : Indicador de bloqueio NUM.

  • ID_INDICATOR_SCRL : Indicador de bloqueio SCRL.

  • ID_INDICATOR_KANA : Indicador de bloqueio KANA (aplicável apenas a sistemas japoneses).

Todos os três são implementados no CFrameWnd::OnUpdateKeyIndicator, um auxiliar de implementação que usa o ID de comando para mapear para a chave virtual apropriada. Uma implementação comum habilita ou desabilita (para painéis de status desabilitados = sem texto) o CCmdUI objeto, dependendo se a Chave Virtual apropriada está bloqueada no momento.

A personalização deste manipulador de comandos não é recomendada.

  • ID_INDICATOR_EXT : Indicador de seleção extendida.

  • ID_INDICATOR_OVR : Indicador OVeRstrike.

  • ID_INDICATOR_REC : Indicador de Gravação.

Atualmente, não existe uma implementação normalizada para estes indicadores.

Se optar por implementar estes indicadores, recomendamos que utilize estes IDs de indicadores e mantenha a ordenação dos indicadores na sua barra de estado (ou seja, por esta ordem: EXT, CAP, NUM, SCRL, OVR, REC).

Ver também

Notas técnicas por número
Notas técnicas por categoria