Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
A nota técnica a seguir não foi atualizada desde que foi incluída pela primeira vez na documentação online. Como resultado, alguns procedimentos e tópicos podem estar desatualizados ou incorretos. Para obter as informações mais recentes, é recomendável que você 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 descreve os mecanismos usados para implementar muitos dos comandos padrão.
Essa descrição pressupõe conhecimento das arquiteturas MFC, APIs e prática de programação comum. As APIs documentadas, bem como as APIs de implementação apenas, não documentadas, são descritas. Este não é um lugar para começar a aprender sobre os recursos ou como programar no MFC. Consulte o Visual C++ para obter informações mais gerais e para obter detalhes das APIs documentadas.
O problema
O MFC define muitas IDs de comando padrão no arquivo de cabeçalho AFXRES.H. O suporte do framework para esses comandos varia. Entender onde e como as classes de estrutura lidam com esses comandos não só 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 Observação Técnica
Cada ID de comando é descrita em duas seções:
O título: o nome simbólico da ID de comando (por exemplo, ID_FILE_SAVE) seguido pela finalidade do comando (por exemplo, "salva o documento atual") separado por dois-pontos.
Um ou mais parágrafos que descrevem quais classes implementam o comando e o que a implementação padrão faz
A maioria das implementações de comando padrão é pré-conectada no mapa de mensagens de classe base da estrutura. Há algumas implementações de comando que exigem a fiação explícita em sua classe derivada. Elas são descritas em "Observação". Se você escolher as opções certas 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 quebra de palavras sublinhadas. Para comandos que não têm nomes de item 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 projetados para serem associados a itens de menu, botões de barra de ferramentas ou outros objetos de interface do usuário de comando. Os manipuladores de comando que manipulam comandos "ID_" devem usar os mecanismos ON_COMMAND e ON_UPDATE_COMMAND_UI da arquitetura de comando do MFC.
Recomendamos que você use o prefixo "IDM_" padrão para itens de menu que não seguem a arquitetura de comando e precisam de código específico do menu para habilitá-los e desabilitá-los. É claro que o número de comandos específicos do menu deve ser pequeno, pois seguir a arquitetura de comando do MFC não só torna os manipuladores de comando mais poderosos (já que eles funcionarão com barras de ferramentas), mas tornam 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 ID no MFC.
Os comandos padrão MFC caem no intervalo 0xE000 para 0xEFFF. Não confie nos valores específicos dessas IDs, pois elas estão sujeitas 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 cadeia de caracteres de prompt de linha de mensagem padrão que pode ser encontrada no arquivo PROMPTS.RC. A ID da cadeia de caracteres para esse prompt de menu deve ser a mesma da ID do comando.
ID_FILE_NEW Cria um documento novo/vazio.
Observação
Você deve conectar isso ao mapa de mensagens da sua classe derivada
CWinApppara 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 exibiçã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 de ID_FILE_NEW é fornecer uma opção diferente e mais gráfica dos tipos de documento. Nesse caso, você pode implementar seu próprio
CMyApp::OnFileNewe colocá-lo em seu mapa de mensagens em vez deCWinApp::OnFileNew. Não é necessário chamar a implementação da classe base.Outra personalização comum de ID_FILE_NEW é fornecer um comando separado para criar um documento de cada tipo. Nesse caso, você deve definir novas 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 conectar isso ao mapa de mensagens da sua classe derivada
CWinApppara habilitar essa funcionalidade.CWinApp::OnFileOpentem uma implementação muito simples de chamadaCWinApp::DoPromptFileNameseguida peloCWinApp::OpenDocumentFilenome do arquivo ou caminho do arquivo a ser aberto. ACWinApprotinaDoPromptFileNamede implementação apresenta 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 de 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 pela sua própria caixa de diálogo "FileOpen" e chamar
CWinApp::OpenDocumentFilecom o nome do arquivo ou caminho do documento. Não é necessário chamar a classe base.ID_FILE_CLOSE fecha o documento aberto no momento.
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, incluindo a destruição do documento, é feita naOnCloseDocumentrotina.Observação
ID_FILE_CLOSE atua de forma diferente de uma mensagem WM_CLOSE ou de um comando do sistema de SC_CLOSE enviado para a janela com moldura dos 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 quadros mostrando o documento.
ID_FILE_SAVE salva o documento atual.
A implementação usa uma rotina auxiliar
CDocument::DoSaveque é usada tanto paraOnFileSavequanto paraOnFileSaveAs. Se você salvar um documento que não foi salvo antes (ou seja, ele não tem um nome de caminho, como no caso do FileNew) ou que foi lido de um documento somente leitura, aOnFileSavelógica agirá como o comando ID_FILE_SAVE_AS e pedirá ao usuário para fornecer um novo nome de arquivo. O processo real de abrir o arquivo e fazer o salvamento é feito por meio da funçãoOnSaveDocumentvirtual.Há dois motivos comuns para personalizar ID_FILE_SAVE. Para documentos que não salvam, 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 sujar o documento (ou seja, nunca chamar
CDocument::SetModifiedFlag) e a estrutura nunca fará com que o documento seja salvo. Para documentos que salvam em algum lugar que não seja 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 arquivo (para documentos inseridos).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, você 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 queOnFileSave. OOnFileSaveAscomando será tratado da mesma forma que ID_FILE_SAVE se os documentos não tiverem nenhum nome de arquivo antes do salvamento.COleServerDoc::OnFileSaveAsimplementa a lógica para salvar um arquivo de dados de documento normal ou salvar um documento de servidor que representa um objeto OLE inserido em algum outro aplicativo como um arquivo separado.Se você personalizar a lógica de ID_FILE_SAVE, provavelmente desejará personalizar ID_FILE_SAVE_AS de maneira 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 ele 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 aCDocument::OnFileSaveAs, exceto que o objeto de documento não está "anexado" ao arquivo subjacente após o salvamento. Ou seja, se o documento na memória foi "modificado" antes do salvamento, ele ainda será "modificado". Além disso, esse comando não tem nenhum efeito sobre o nome do caminho ou o título armazenado no documento.ID_FILE_UPDATE Notifica o contêiner para salvar um documento inserido.
A
COleServerDoc::OnUpdateDocumentimplementação simplesmente notifica o contêiner de que a inserção deve ser salva. Em seguida, o contêiner chama as APIs OLE apropriadas para salvar o objeto inserido.ID_FILE_PAGE_SETUP invoca uma caixa de diálogo de configuração de página específica para o aplicativo.
Atualmente, não há nenhum padrão para essa caixa de diálogo e a estrutura não tem nenhuma 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 Invoca o diálogo Configuração de impressão padrão.
Observação
Você deve conectar isso ao mapa de mensagens da sua classe derivada
CWinApppara habilitar essa funcionalidade.Esse comando invoca a caixa de diálogo de configuração de impressão padrão que permite ao usuário personalizar as configurações de impressão e impressora 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 de impressora padrão 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 da impressora padrão do aplicativo.A necessidade comum de personalizar esse comando é permitir configurações de impressora por documento, que devem ser armazenadas com o documento quando salvas. Para fazer isso, você deve adicionar um manipulador de mapa de mensagens em sua
CDocumentclasse que cria umCPrintDialogobjeto, inicializa-o com os atributos de impressora apropriados (geralmente hDevMode e hDevNames), chame oCPrintDialog::DoModale salve as configurações de impressora alteradas. Para uma implementação robusta, você deve examinar a implementação deCWinApp::DoPrintDialogpara detectar erros e deCWinApp::UpdatePrinterSelectionpara lidar com padrões sensatos e para acompanhar alterações de impressora em todo o sistema.ID_FILE_PRINT Impressão padrão do documento atual
Observação
Você deve conectar isso ao mapa de mensagens da sua classe derivada
CViewpara habilitar essa funcionalidade.Esse 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 esse comando e o loop de impressão principal. Ele chama oCView::OnPreparePrintingvirtual para solicitar ao usuário o diálogo de impressão. Em seguida, ele prepara o DC de saída para acessar a impressora, apresenta o diálogo de progresso da impressão (AFX_IDD_PRINTDLG) e envia o escapeStartDocpara a impressora.CView::OnFilePrinttambém contém o loop de impressão orientado para a página principal. Para cada página, ele chama oCView::OnPrepareDCvirtual seguido de um escapeStartPagee chamando oCView::OnPrintvirtual para essa página. Quando concluído, oCView::OnEndPrintingvirtual é chamado e o diálogo de progresso da impressão é fechado.A arquitetura de impressão do MFC foi projetada para se conectar de várias maneiras diferentes para impressão e visualização de impressão. Normalmente, você encontrará as várias funções
CViewsubstituíveis adequadas para qualquer tarefa de impressão orientada para páginas. Somente no caso de um aplicativo que usa a impressora para saída não orientada para páginas, você deverá encontrar a necessidade 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 conectar isso ao mapa de mensagens da sua classe derivada
CViewpara habilitar essa funcionalidade.CView::OnFilePrintPreviewinicia o modo de visualização de impressão chamando a funçãoCView::DoPrintPreviewauxiliar documentada.CView::DoPrintPreviewé o mecanismo principal para o loop de visualização de impressão, assim comoOnFilePrinto mecanismo principal para o loop de impressão.A operação de visualização de impressão pode ser personalizada de várias maneiras passando parâmetros diferentes 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 MRU de arquivo.
O
CWinApp::OnUpdateRecentFileMenué um manipulador de interface para comando de atualização, sendo um dos usos mais avançados do mecanismo ON_UPDATE_COMMAND_UI. No recurso de menu, você precisa definir apenas um único item de menu com o ID ID_FILE_MRU_FILE1. Esse item de menu permanece inicialmente desabilitado.À medida que a lista de MRU aumenta, mais itens de menu são adicionados a ela. A implementação
CWinAppé o limite padrão dos quatro arquivos usados mais recentemente. Você pode alterar o padrão chamandoCWinApp::LoadStdProfileSettingscom um valor maior ou menor. A lista MRU é armazenada no arquivo .INI do aplicativo. A lista é carregada na função do aplicativoInitInstancese você chamarLoadStdProfileSettings, e é salva quando o aplicativo é encerrado. 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 de MRU e chamaCWinApp::OpenDocumentFile, que faz todo o trabalho de abrir o arquivo e atualizar a lista de MRU.A personalização desse 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 desse comando usandoCEdit::Clear. O comando é desativado se não houver 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 SCRIBBLE do Tutorial do MFC para obter uma implementação de exemplo.
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 desse comando, que copia o texto selecionado no momento para a Área de Transferência como CF_TEXT usandoCEdit::Copy. O comando é desativado se não houver 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 na á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 desse comando, que recorta o texto selecionado no momento para a Área de Transferência como CF_TEXT usandoCEdit::Cut. O comando é desativado se não houver 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, apresenta o diálogo Localizar sem modo.
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 de localização/substituição anteriores em variáveis de implementação privadas. A classeCFindReplaceDialogé usada para gerenciar o diálogo sem modo para solicitação ao usuário.Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.
ID_EDIT_PASTE Insere o conteúdo da Área de Transferência 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 desse comando, que copia os dados atuais da Área de Transferência substituindo o texto selecionado usandoCEdit::Paste. O comando será desabilitado se não houver CF_TEXT na Área de Transferência.COleClientDocfornece apenas um manipulador de interface de usuário para o comando de atualização. Se a Área de Transferência não contiver um item/objeto OLE que permite inserção, o comando será desabilitado. Você é responsável por escrever o manipulador para o comando específico que executa a colagem propriamente dita. Se o aplicativo OLE também puder colar outros formatos, você deverá fornecer seu próprio manipulador da interface do usuário de comando de atualização em seu modo de exibição ou documento (ou seja, em algum lugar antes deCOleClientDocno roteamento de destino de 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 da Área de Transferência atual.
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 usuário para o comando de atualização. Se a Área de Transferência não contiver um item/objeto OLE vinculável, o comando será desabilitado. Você é responsável por escrever o manipulador para o comando específico que executa a colagem propriamente dita. Se o aplicativo OLE também puder colar outros formatos, você deverá fornecer seu próprio manipulador da interface do usuário de comando de atualização em seu modo de exibição ou documento (ou seja, em algum lugar antes deCOleDocumentno roteamento de destino de 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 da Área de Transferência atual 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 fornece essa 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 desse comando para repetir a última operação de localização. As variáveis de implementação privadas para a última localização são usadas. O comando será desabilitado se uma localização não puder ser tentada.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, apresenta o diálogo de substituição sem modo.
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 de localização/substituição anteriores em variáveis de implementação privadas. A classeCFindReplaceDialogé usada para gerenciar o diálogo sem modo que solicita o usuário.Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.
ID_EDIT_SELECT_ALL Seleciona o documento inteiro.
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 seleciona todo o texto no documento. O comando será desabilitado se não houver nenhum texto a ser selecionado.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á desabilitado 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 recurso poderoso usando o modelo de documento do documento atual para criar outro quadro que contém outra exibição do documento atual.Como na maioria dos comandos de menu da interface de documentos múltiplos (MDI), o comando fica desativado se não houver nenhuma janela filha MDI ativa.
A personalização desse manipulador de comandos não é recomendada. Se você quiser fornecer um comando que crie exibições adicionais ou janelas de quadro, provavelmente será melhor inventar seu próprio comando. Você pode clonar o código
CMDIFrameWnd::OnWindowNewe modificá-lo para as classes de quadro e exibição específicas 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. Esse auxiliar mapeia IDs de comando para mensagens do Windows MDI e, portanto, pode compartilhar muito código.Como a maioria dos comandos do menu de janela MDI, o comando será desabilitado se não houver nenhuma janela filha MDI ativa.
A personalização desse manipulador de comandos não é recomendada.
ID_WINDOW_CASCADE Propaga janelas para que elas se sobreponham.
CMDIFrameWndimplementa esse comando MDI padrão em uma funçãoOnMDIWindowCmdauxiliar de implementação. Esse auxiliar mapeia IDs de comando para mensagens do Windows MDI e, portanto, pode compartilhar muito código.Como a maioria dos comandos do menu de janela MDI, o comando será desabilitado se não houver nenhuma janela filha MDI ativa.
A personalização desse manipulador de comandos não é recomendada.
ID_WINDOW_TILE_HORZ Organiza as janelas lado a lado horizontalmente.
Esse comando é implementado em
CMDIFrameWndda mesma maneira que o ID_WINDOW_CASCADE, exceto que uma mensagem MDI Windows diferente é usada para a operação.Você deve escolher a orientação de bloco padrão para seu aplicativo. Isso pode ser feito alterando a ID do item de menu "Bloco" da janela para ID_WINDOW_TILE_HORZ ou ID_WINDOW_TILE_VERT.
ID_WINDOW_TILE_VERT Organiza as janelas lado a lado verticalmente.
Esse comando é implementado em
CMDIFrameWndda mesma maneira que o ID_WINDOW_CASCADE, exceto que uma mensagem MDI Windows diferente é usada para a operação.Você deve escolher a orientação de bloco padrão para seu aplicativo. Isso pode ser feito alterando a ID do item de menu "Bloco" da janela para ID_WINDOW_TILE_HORZ ou ID_WINDOW_TILE_VERT.
ID_WINDOW_SPLIT Interface do teclado para o divisor.
CViewmanipula esse comando para aCSplitterWndimplementação. Se a exibição fizer parte de uma janela dividida, esse comando delegará à funçãoCSplitterWnd::DoKeyboardSplitde implementação. Isso colocará o divisor em um modo que permitirá que os usuários do teclado dividam ou revertam a divisão de uma janela de divisor.Esse comando será desabilitado se a exibição não estiver em um divisor.
A personalização desse manipulador de comandos não é recomendada.
ID_APP_ABOUT invoca a caixa de diálogo 'Sobre'.
Não há implementação padrão para a janela Sobre de um aplicativo. O aplicativo padrão criado pelo AppWizard criará uma classe de diálogo customizada para seu aplicativo e a usará como a caixa de diálogo 'Sobre'. AppWizard também escreverá o manipulador de comando trivial que lida com esse comando e invoca a caixa de diálogo.
Você quase sempre implementará esse comando.
ID_APP_EXIT Sair do aplicativo.
CWinApp::OnAppExitmanipula esse comando enviando uma mensagem de WM_CLOSE para a janela principal do aplicativo. O desligamento padrão do aplicativo (solicitando arquivos sujos e assim por diante) é identificado pela implementaçãoCFrameWnd.A personalização desse manipulador de comandos não é recomendada. A substituição de
CWinApp::SaveAllModifiedou a lógica de fechamentoCFrameWndsão recomendadas.Se você optar por implementar esse comando, recomendamos que você use essa ID de comando.
ID_HELP_INDEX lista os tópicos da Ajuda do arquivo .HLP.
Observação
Você deve conectar isso ao mapa de mensagens da sua classe derivada
CWinApppara habilitar essa funcionalidade.CWinApp::OnHelpIndexexecuta esse comando trivialmente chamandoCWinApp::WinHelp.A personalização desse manipulador de comandos não é recomendada.
ID_HELP_USING Exibe ajuda sobre como usar a Ajuda.
Observação
Você deve conectar isso ao mapa de mensagens da sua classe derivada
CWinApppara habilitar essa funcionalidade.CWinApp::OnHelpUsingexecuta esse comando trivialmente chamandoCWinApp::WinHelp.A personalização desse manipulador de comandos não é recomendada.
ID_CONTEXT_HELP Entra no modo de ajuda SHIFT-F1.
Observação
Você deve conectar isso ao mapa de mensagens da sua classe derivada
CWinApppara habilitar essa funcionalidade.CWinApp::OnContextHelpmanipula esse comando definindo o cursor do modo de ajuda, inserindo um loop modal e aguardando o usuário selecionar 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 desse manipulador de comandos não é recomendada.
ID_HELP Fornece ajuda no contexto atual
Observação
Você deve conectar isso ao mapa de mensagens da sua classe derivada
CWinApppara habilitar essa funcionalidade.CWinApp::OnHelpmanipula esse comando obtendo o contexto de ajuda certo para o contexto atual do aplicativo. Isso identifica a ajuda F1 simples, ajuda em caixas de mensagens 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 desse manipulador de comandos não é recomendada.
ID_DEFAULT_HELP Exibe ajuda padrão para contexto
Observação
Você deve conectar isso ao mapa de mensagens da sua classe derivada
CWinApppara habilitar essa funcionalidade.Esse comando geralmente é mapeado para
CWinApp::OnHelpIndex.Um manipulador de comandos diferente poderá ser fornecido se uma distinção entre a Ajuda padrão e o índice de Ajuda for desejada.
ID_NEXT_PANE Vai para o próximo painel
CViewmanipula esse comando para aCSplitterWndimplementação. Se a exibição fizer parte de uma janela dividida, esse comando delegará à funçãoCSplitterWnd::OnNextPaneCmdde implementação. Isso moverá a visualização ativa para o próximo painel na divisória.Esse comando será desabilitado se a exibição não estiver em um divisor ou não houver próximo painel para ir.
A personalização desse manipulador de comandos não é recomendada.
ID_PREV_PANE Vai para o painel anterior
CViewmanipula esse comando para aCSplitterWndimplementação. Se a exibição fizer parte de uma janela dividida, esse comando delegará à funçãoCSplitterWnd::OnNextPaneCmdde implementação. Isso moverá o modo de exibição ativo para o painel anterior no divisor.Esse comando será desabilitado se a exibição não estiver em um divisor ou não houver painel anterior para ir.
A personalização desse 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 que sua
CViewclasse derivada insira um novo item/objeto OLE na seleção atual.Todos os aplicativos cliente OLE devem implementar esse comando. O AppWizard, com a opção OLE, criará uma implementação de esqueleto de
OnInsertObjectem sua classe de exibição que você terá que concluir.Consulte o exemplo OCLIENT do OLE do MFC para obter uma implementação completa desse comando.
ID_OLE_EDIT_LINKS Edita 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 dessa caixa de diálogo é acessada por meio daCOleLinksDialogclasse. Se o documento atual não contiver links, o comando será desabilitado.A personalização desse 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 compatíveis com o item/objeto OLE selecionado no momento. Esse deve ser um intervalo, pois um determinado item OLE/tipo de objeto pode dar suporte a zero ou mais verbos personalizados. No menu do aplicativo, você deve ter um item de menu com a ID de ID_OLE_VERB_FIRST. Quando o programa for executado, o menu será atualizado com a descrição do verbo do menu apropriado (ou menu pop-up com muitos verbos). O gerenciamento do menu OLE é identificado porAfxOleSetEditMenu, feito no manipulador da interface do usuário do comando de atualização para este comando.Não há manipuladores de comando explícitos para lidar com cada uma das IDs de comando nesse intervalo.
COleDocument::OnCmdMsgé substituído para capturar todas as IDs de comando nesse intervalo, transformá-las em números de verbo baseados em zero e iniciar o servidor para esse verbo (usandoCOleClientItem::DoVerb).A personalização ou outro uso desse intervalo de IDs de comando não é recomendado.
ID_VIEW_TOOLBAR ativa e desativa a barra de ferramentas
CFrameWndidentifica esse comando e o manipulador de interface do usuário de comando de atualização para alternar o estado visível da barra de ferramentas. A barra de ferramentas deve ser uma janela filho do quadro com a ID da janela filho 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 com moldura com a barra de ferramentas em seu novo estado. O manipulador da interface do usuário do comando de atualização verifica o item de menu quando a barra de ferramentas está visível.A personalização desse manipulador de comandos não é recomendada. Se quiser adicionar barras de ferramentas adicionais, você desejará clonar e modificar o manipulador de comandos e o manipulador da interface do usuário de comando de atualização para este comando.
ID_VIEW_STATUS_BAR Ativa e desativa a barra de status
Esse comando é implementado em
CFrameWndda mesma forma que ID_VIEW_TOOLBAR, exceto que uma ID de janela filho diferente (AFX_IDW_STATUS_BAR) é usada.
Manipuladores de comando Atualizar somente
Várias IDs de comando padrão são usadas como indicadores em barras de status. Elas usam o mesmo mecanismo de tratamento da interface do usuário de comando de atualização para exibir o estado visual atual durante o tempo ocioso do aplicativo. Como eles não podem ser selecionados pelo usuário (ou seja, você não pode enviar por push um painel da barras de status), não faz sentido ter um manipulador de ON_COMMAND para essas IDs 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 somente a sistemas japoneses).
Todos os três são implementados em CFrameWnd::OnUpdateKeyIndicator, um auxiliar de implementação que usa a ID do comando para associar à Chave Virtual correspondente. 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 desse manipulador de comandos não é recomendada.
ID_INDICATOR_EXT: indicador de seleção EXTended.
ID_INDICATOR_OVR: indicador OVeRstrike.
ID_INDICATOR_REC: indicador RECording.
Atualmente, não há nenhuma implementação padrão para esses indicadores.
Se você optar por implementar esses indicadores, recomendamos usar essas IDs de indicador e manter a ordenação dos indicadores na barra de status (ou seja, nesta ordem: EXT, CAP, NUM, SCRL, OVR, REC).