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.
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::OnFileNewimplementa esse comando de forma diferente, dependendo do número de modelos de documento no aplicativo. Se houver apenas umCDocTemplate,CWinApp::OnFileNewcriará um novo documento desse tipo, bem como a classe de quadro e visualização adequada.Se houver mais de um
CDocTemplate,CWinApp::OnFileNewsolicitará ao usuário uma caixa de diálogo (AFX_IDD_NEWTYPEDLG) permitindo que ele selecione qual tipo de documento usar. O selecionadoCDocTemplateé 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::OnFileNewe colocá-lo em seu mapa de mensagens em vez deCWinApp::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::OnFileOpentem uma implementação muito simples de chamadaCWinApp::DoPromptFileNameseguida deCWinApp::OpenDocumentFilecom o nome ou caminho do arquivo a abrir. ACWinApprotinaDoPromptFileNamede 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::OpenDocumentFilecom 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::OnFileClosechamaCDocument::SaveModifiedpara solicitar que o usuário salve o documento se ele tiver sido modificado e, em seguida, chamaOnCloseDocument. Toda a lógica de fechamento, inclusive a destruição do documento, é feita naOnCloseDocumentrotina.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 paraOnFileSavecomo paraOnFileSaveAs. 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, aOnFileSaveló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çãoOnSaveDocumentvirtual.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á substituirCDocument::OnSaveDocumentem vez deOnFileSave.ID_FILE_SAVE_AS Salva o documento atual em um nome de arquivo diferente.
A
CDocument::OnFileSaveAsimplementação usa a mesmaCDocument::DoSaverotina auxiliar doOnFileSave. OOnFileSaveAscomando é tratado da mesma forma ID_FILE_SAVE se os documentos não tivessem um nome de arquivo antes da gravação.COleServerDoc::OnFileSaveAsimplementa 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::OnFileSaveCopyAsimplementação é muito semelhante aoCDocument::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::OnUpdateDocumentimplementaçã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::OnFilePrintSetuptem uma implementação muito simples criando umCPrintDialogobjeto e chamando aCWinApp::DoPrintDialogfunçã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
CDocumentclasse que cria umCPrintDialogobjeto, inicializa-o com os atributos de impressora apropriados (geralmente hDevMode e hDevNames), chama oCPrintDialog::DoModale salva as configurações de impressora alteradas. Para uma implementação robusta, você deve olhar para a implementação deCWinApp::DoPrintDialogpara detetar erros e deCWinApp::UpdatePrinterSelectionpara 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::OnFilePrintimplementa este comando e o loop de impressão principal. Ele chama o virtualCView::OnPreparePrintingpara 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 oStartDocescape para a impressora.CView::OnFilePrinttambém contém o loop de impressão orientado para a página principal. Para cada página, ele chama o método virtualCView::OnPrepareDC, seguido de uma sequência de escapeStartPage, e chama o método virtualCView::OnPrintpara essa página. Quando concluído, a função virtualCView::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
CViewfunçõ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::OnFilePrintPreviewInicia o modo de visualização preliminar da impressão, chamando a função auxiliar documentadaCView::DoPrintPreview.CView::DoPrintPreviewé o motor principal para o loop de visualização de impressão, assim comoOnFilePrinté 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
CWinApptem como padrão o limite para os quatro arquivos mais usados recentemente. Você pode alterar o padrão chamandoCWinApp::LoadStdProfileSettingscom um valor maior ou menor. A lista MRU é armazenada no ficheiro .INI da aplicação. A lista é carregada na função da aplicaçãoInitInstancese você chamarLoadStdProfileSettings, 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 chamaCWinApp::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.CEditViewfornece uma implementação deste comando usandoCEdit::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.CEditViewfornece uma implementação deste comando, que copia o texto que está atualmente selecionado para a Área de Transferência como CF_TEXT usandoCEdit::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.CEditViewfornece uma implementação deste comando, que recorta o texto atualmente selecionado para a Área de Transferência no formato CF_TEXT utilizandoCEdit::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.CEditViewFornece uma implementação desse comando, que chama a funçãoOnEditFindReplaceauxiliar de implementação para usar e armazenar as configurações anteriores de localizar/substituir em variáveis de implementação privadas. ACFindReplaceDialogclasse é 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.CEditViewfornece uma implementação deste comando, que copia os dados atuais da Área de Transferência substituindo o texto selecionado usandoCEdit::Paste. O comando será desativado se não houver CF_TEXT na Área de Transferência.COleClientDocfornece 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 doCOleClientDocno 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.COleDocumentfornece 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 doCOleDocumentno 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.CEditViewfornece 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.CEditViewFornece uma implementação desse comando, que chama a funçãoOnEditFindReplaceauxiliar de implementação para usar e armazenar as configurações anteriores de localizar/substituir em variáveis de implementação privadas. A classeCFindReplaceDialogé 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.CEditViewfornece 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.CEditViewfornece uma implementação desse comando, usandoCEdit::Undo. O comando será desativado seCEdit::CanUndoretornar 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::OnWindowNewImplementa 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::OnWindowNewe 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.
CMDIFrameWndimplementa esse comando MDI padrão em uma funçãoOnMDIWindowCmdauxiliar 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.
CMDIFrameWndimplementa esse comando MDI padrão em uma funçãoOnMDIWindowCmdauxiliar 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
CMDIFrameWndID_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
CMDIFrameWndID_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.
CViewmanipula este comando para aCSplitterWndimplementação. Se a vista fizer parte de uma janela de divisão, este comando será delegado à função de implementaçãoCSplitterWnd::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::OnAppExitManipula 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çãoCFrameWnd.A personalização deste manipulador de comandos não é recomendada. Recomenda-se substituir ou modificar
CWinApp::SaveAllModifiedou a lógica de fechamentoCFrameWnd.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::OnHelpIndexlida com este comando trivialmente chamandoCWinApp::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::OnHelpUsinglida com este comando trivialmente chamandoCWinApp::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::OnContextHelpManipula 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::OnHelptrata 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
CViewmanipula este comando para aCSplitterWndimplementação. Se a vista fizer parte de uma janela de divisão, este comando será delegado à função de implementaçãoCSplitterWnd::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
CViewmanipula este comando para aCSplitterWndimplementação. Se a vista fizer parte de uma janela de divisão, este comando será delegado à função de implementaçãoCSplitterWnd::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
COleDocumentmanipula 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 daCOleLinksDialogclasse. 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
COleDocumentusa 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 porAfxOleSetEditMenuno 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 (usandoCOleClientItem::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
CFrameWndmanipula 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
CFrameWndde 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).