TN022: implementazione di comandi standard
Nota
La seguente nota tecnica non è stata aggiornata da quando è stata inclusa per la prima volta nella documentazione online. Di conseguenza, alcune procedure e argomenti potrebbero essere non aggiornati o errati. Per le informazioni più recenti, è consigliabile cercare l'argomento di interesse nell'indice della documentazione online.
Questa nota descrive le implementazioni dei comandi standard fornite da MFC 2.0. Leggere prima la nota tecnica 21 perché descrive i meccanismi usati per implementare molti dei comandi standard.
Questa descrizione presuppone la conoscenza delle architetture, delle API e delle procedure comuni di programmazione MFC. Sono descritte le API "solo implementazione" documentate e non documentate. Questo non è un luogo in cui iniziare a conoscere le funzionalità di o come programmare in MFC. Per informazioni più generali sulle API documentate, vedere Visual C++.
Problema
MFC definisce molti ID comando standard nel file di intestazione AFXRES.H. Il supporto del framework per questi comandi varia. Comprendere dove e come le classi del framework gestiscono questi comandi non solo illustrano il funzionamento interno del framework, ma forniscono informazioni utili su come personalizzare le implementazioni standard e insegnare alcune tecniche per l'implementazione di gestori di comandi personalizzati.
Contenuto di questa nota tecnica
Ogni ID comando è descritto in due sezioni:
Titolo: il nome simbolico dell'ID comando (ad esempio, ID_FILE_SAVE) seguito dallo scopo del comando (ad esempio, "salva il documento corrente") separato da due punti.
Uno o più paragrafi che descrivono quali classi implementano il comando e cosa fa l'implementazione predefinita
La maggior parte delle implementazioni dei comandi predefinite è pre-cablata nella mappa dei messaggi della classe di base del framework. Esistono alcune implementazioni di comandi che richiedono collegamenti espliciti nella classe derivata. Queste informazioni sono descritte in "Nota". Se si sceglie le opzioni corrette in AppWizard, questi gestori predefiniti verranno connessi automaticamente nell'applicazione scheletro generata.
Convenzione di denominazione
I comandi standard seguono una semplice convenzione di denominazione che è consigliabile usare, se possibile. La maggior parte dei comandi standard si trova in posizioni standard nella barra dei menu di un'applicazione. Il nome simbolico del comando inizia con "ID_" seguito dal nome del menu a comparsa standard, seguito dal nome della voce di menu. Il nome simbolico è in lettere maiuscole con caratteri di sottolineatura word-break. Per i comandi che non hanno nomi di voci di menu standard, viene definito un nome di comando logico a partire da "ID_", ad esempio ID_NEXT_PANE.
Usiamo il prefisso "ID_" per indicare i comandi progettati per essere associati a voci di menu, pulsanti della barra degli strumenti o altri oggetti dell'interfaccia utente del comando. I gestori comandi che gestiscono i comandi "ID_" devono usare i meccanismi ON_COMMAND e ON_UPDATE_COMMAND_UI dell'architettura dei comandi MFC.
È consigliabile usare il prefisso standard "IDM_" per le voci di menu che non seguono l'architettura dei comandi e richiedono codice specifico del menu per abilitarli e disabilitarli. Naturalmente il numero di comandi specifici del menu deve essere ridotto perché seguendo l'architettura dei comandi MFC non solo rende i gestori dei comandi più potenti (poiché funzioneranno con le barre degli strumenti) ma rende riutilizzabile il codice del gestore comandi.
Intervalli ID
Per altre informazioni sull'uso degli intervalli ID in MFC, vedere la Nota tecnica 20 .
I comandi standard MFC rientrano nell'intervallo 0xE000 0xEFFF. Non basarsi sui valori specifici di questi ID poiché sono soggetti a modifiche nelle versioni future della libreria.
L'applicazione deve definire i relativi comandi nell'intervallo 0x8000 da 0xDFFF.
ID comando standard
Per ogni ID comando, è disponibile una stringa di prompt dei messaggi standard disponibile nel file PROMPTS. RC. L'ID stringa per il prompt dei menu deve essere uguale a quello dell'ID comando.
ID_FILE_NEW Crea un documento nuovo/vuoto.
Nota
Per abilitare questa funzionalità, è necessario connettersi alla
CWinApp
mappa messaggi della classe derivata da .CWinApp::OnFileNew
implementa questo comando in modo diverso a seconda del numero di modelli di documento nell'applicazione. Se è presente unCDocTemplate
solo oggetto ,CWinApp::OnFileNew
creerà un nuovo documento di tale tipo, nonché la classe cornice e vista appropriata.Se sono presenti più di un
CDocTemplate
,CWinApp::OnFileNew
richiederà all'utente una finestra di dialogo (AFX_IDD_NEWTYPEDLG) consentendo loro di selezionare il tipo di documento da usare. L'oggetto selezionatoCDocTemplate
viene utilizzato per creare il documento.Una personalizzazione comune di ID_FILE_NEW consiste nel fornire una scelta grafica diversa e più grafica dei tipi di documento. In questo caso è possibile implementare il proprio
CMyApp::OnFileNew
e inserirlo nella mappa dei messaggi invece diCWinApp::OnFileNew
. Non è necessario chiamare l'implementazione della classe di base.Un'altra personalizzazione comune di ID_FILE_NEW consiste nel fornire un comando separato per la creazione di un documento di ogni tipo. In questo caso è necessario definire nuovi ID comando, ad esempio ID_FILE_NEW_CHART e ID_FILE_NEW_SHedizione Enterprise T.
ID_FILE_OPEN Apre un documento esistente.
Nota
Per abilitare questa funzionalità, è necessario connettersi alla
CWinApp
mappa messaggi della classe derivata da .CWinApp::OnFileOpen
ha un'implementazione molto semplice della chiamataCWinApp::DoPromptFileName
seguita daCWinApp::OpenDocumentFile
con il nome del file o del percorso del file da aprire. LaCWinApp
routineDoPromptFileName
di implementazione apre la finestra di dialogo FileOpen standard e la riempie con le estensioni di file ottenute dai modelli di documento correnti.Una personalizzazione comune di ID_FILE_OPEN consiste nel personalizzare la finestra di dialogo FileApri o aggiungere altri filtri di file. Il modo consigliato per personalizzare questa operazione consiste nel sostituire l'implementazione predefinita con la finestra di dialogo FileOpen e chiamare
CWinApp::OpenDocumentFile
con il nome del file o del percorso del documento. Non è necessario chiamare la classe di base.ID_FILE_CLOedizione Standard Chiude il documento attualmente aperto.
CDocument::OnFileClose
chiamaCDocument::SaveModified
per chiedere all'utente di salvare il documento se è stato modificato e quindi chiamaOnCloseDocument
. Tutta la logica di chiusura, inclusa l'eliminazione del documento, viene eseguita nellaOnCloseDocument
routine.Nota
ID_FILE_CLOedizione Standard agisce in modo diverso da un messaggio di WM_CLOedizione Standard o da un comando di sistema SC_CLOedizione Standard inviato alla finestra dei frame dei documenti. La chiusura di una finestra chiuderà il documento solo se si tratta dell'ultima finestra cornice che mostra il documento. La chiusura del documento con ID_FILE_CLOedizione Standard non solo chiuderà il documento, ma chiuderà tutte le finestre cornice che mostrano il documento.
ID_FILE_SAVE Salva il documento corrente.
L'implementazione usa una routine
CDocument::DoSave
helper usata sia per cheOnFileSaveAs
perOnFileSave
. Se si salva un documento che non è stato salvato in precedenza (ovvero non ha un nome di percorso, come nel caso di FileNew) o che è stato letto da un documento di sola lettura, laOnFileSave
logica fungerà come il comando ID_FILE_SAVE_AS e chiederà all'utente di specificare un nuovo nome file. Il processo effettivo di apertura del file e l'esecuzione del salvataggio viene eseguito tramite la funzioneOnSaveDocument
virtuale .Esistono due motivi comuni per personalizzare ID_FILE_SAVE. Per i documenti che non vengono salvati, rimuovere semplicemente le ID_FILE_SAVE voci di menu e i pulsanti della barra degli strumenti dall'interfaccia utente. Assicurarsi inoltre di non sporcare mai il documento ( ovvero non chiamare
CDocument::SetModifiedFlag
mai ) e il framework non causerà mai il salvataggio del documento. Per i documenti che vengono salvati in un luogo diverso da un file su disco, definire un nuovo comando per tale operazione.Nel caso di ,
COleServerDoc
ID_FILE_SAVE viene usato sia per il salvataggio di file (per i documenti normali) sia per l'aggiornamento dei file (per i documenti incorporati).Se i dati del documento vengono archiviati in singoli file del disco, ma non si vuole usare l'implementazione di serializzazione predefinita
CDocument
, è consigliabile eseguire l'overrideCDocument::OnSaveDocument
anziché .OnFileSave
ID_FILE_SAVE_AS Salva il documento corrente con un nome di file diverso.
L'implementazione
CDocument::OnFileSaveAs
usa la stessaCDocument::DoSave
routine helper diOnFileSave
. IlOnFileSaveAs
comando viene gestito come ID_FILE_SAVE se i documenti non avevano un nome di file prima del salvataggio.COleServerDoc::OnFileSaveAs
implementa la logica per salvare un normale file di dati del documento o per salvare un documento del server che rappresenta un oggetto OLE incorporato in un'altra applicazione come file separato.Se si personalizza la logica di ID_FILE_SAVE, è probabile che si voglia personalizzare ID_FILE_SAVE_AS in modo simile o che l'operazione di "Salva con nome" non venga applicata al documento. Se non è necessario, è possibile rimuovere la voce di menu dalla barra dei menu.
ID_FILE_SAVE_COPY_AS Salva un documento corrente di copia con un nuovo nome.
L'implementazione
COleServerDoc::OnFileSaveCopyAs
è molto simile aCDocument::OnFileSaveAs
, ad eccezione del fatto che l'oggetto documento non è "allegato" al file sottostante dopo il salvataggio. Ovvero, se il documento in memoria è stato "modificato" prima del salvataggio, viene comunque "modificato". Inoltre, questo comando non ha alcun effetto sul nome del percorso o sul titolo archiviato nel documento.ID_FILE_UPDATE Notifica al contenitore di salvare un documento incorporato.
L'implementazione
COleServerDoc::OnUpdateDocument
verifica semplicemente il contenitore che l'incorporamento deve essere salvato. Il contenitore chiama quindi le API OLE appropriate per salvare l'oggetto incorporato.ID_FILE_PAGE_edizione Standard TUP richiama una finestra di dialogo di configurazione/layout della pagina specifica dell'applicazione.
Attualmente non esiste alcuno standard per questa finestra di dialogo e il framework non ha alcuna implementazione predefinita di questo comando.
Se si sceglie di implementare questo comando, è consigliabile usare questo ID comando.
ID_FILE_PRINT_edizione Standard TUP Richiamare la finestra di dialogo Standard Print Setup .ID_FILE_PRINT_edizione Standard TUP Invoke the standard Print Setup dialog.
Nota
Per abilitare questa funzionalità, è necessario connettersi alla
CWinApp
mappa messaggi della classe derivata da .Questo comando richiama la finestra di dialogo di configurazione di stampa standard che consente all'utente di personalizzare le impostazioni di stampa e stampante per almeno questo documento o al massimo per tutti i documenti in questa applicazione. È necessario utilizzare il Pannello di controllo per modificare le impostazioni predefinite della stampante per l'intero sistema.
CWinApp::OnFilePrintSetup
ha un'implementazione molto semplice che crea unCPrintDialog
oggetto e chiama laCWinApp::DoPrintDialog
funzione di implementazione. In questo modo viene impostata la configurazione predefinita della stampante dell'applicazione.La necessità comune di personalizzare questo comando consiste nel consentire le impostazioni della stampante per documento, che devono essere archiviate con il documento al momento del salvataggio. A tale scopo, è necessario aggiungere un gestore della mappa messaggi nella
CDocument
classe che crea unCPrintDialog
oggetto, lo inizializza con gli attributi della stampante appropriati (in genere hDevMode e hDevNames), chiamareCPrintDialog::DoModal
e salvare le impostazioni della stampante modificate. Per un'implementazione affidabile, è consigliabile esaminare l'implementazione diCWinApp::DoPrintDialog
per rilevare gli errori eCWinApp::UpdatePrinterSelection
gestire impostazioni predefinite sensibili e tenere traccia delle modifiche della stampante a livello di sistema.ID_FILE_PRINT stampa standard del documento corrente
Nota
Per abilitare questa funzionalità, è necessario connettersi alla
CView
mappa messaggi della classe derivata da .Questo comando stampa il documento corrente, o più correttamente, avvia il processo di stampa, che comporta la chiamata della finestra di dialogo di stampa standard e l'esecuzione del motore di stampa.
CView::OnFilePrint
implementa questo comando e il ciclo di stampa principale. Chiama la macchina virtualeCView::OnPreparePrinting
per richiedere all'utente la finestra di dialogo di stampa. Prepara quindi il controller di dominio di output per passare alla stampante, visualizza la finestra di dialogo di stato di stampa (AFX_IDD_PRINTDLG) e invia l'escapeStartDoc
alla stampante.CView::OnFilePrint
contiene anche il ciclo di stampa orientato alla pagina principale. Per ogni pagina, chiama il virtualeCView::OnPrepareDC
seguito da unStartPage
escape e chiama il virtualeCView::OnPrint
per tale pagina. Al termine, viene chiamato il metodo virtualeCView::OnEndPrinting
e la finestra di dialogo di stato di stampa viene chiusa.L'architettura di stampa MFC è progettata per associare in molti modi diversi per la stampa e l'anteprima di stampa. Normalmente troverete le varie
CView
funzioni sostituibili adeguate per qualsiasi attività di stampa orientata alla pagina. Solo nel caso di un'applicazione che utilizza la stampante per l'output non orientato alle pagine, dovrebbe essere necessario sostituire l'implementazione ID_FILE_PRINT.ID_FILE_PRINT_PREVIEW immettere la modalità anteprima di stampa per il documento corrente.
Nota
Per abilitare questa funzionalità, è necessario connettersi alla
CView
mappa messaggi della classe derivata da .CView::OnFilePrintPreview
avvia la modalità di anteprima di stampa chiamando la funzioneCView::DoPrintPreview
helper documentata .CView::DoPrintPreview
è il motore principale per il ciclo di anteprima di stampa, proprio comeOnFilePrint
è il motore principale per il ciclo di stampa.L'operazione di anteprima di stampa può essere personalizzata in diversi modi passando parametri diversi a
DoPrintPreview
. Vedere la nota tecnica 30, che illustra alcuni dettagli dell'anteprima di stampa e come personalizzarlo.ID_FILE_MRU_FILE1... FILE16 Intervallo di ID comando per l'elenco MRU file.
CWinApp::OnUpdateRecentFileMenu
è un gestore dell'interfaccia utente dei comandi di aggiornamento che è uno degli usi più avanzati del meccanismo di ON_UPDATE_COMMAND_UI. Nella risorsa di menu è necessaria solo una singola voce di menu con ID ID_FILE_MRU_FILE1. La voce di menu rimane inizialmente disabilitata.Man mano che l'elenco MRU aumenta, all'elenco vengono aggiunte più voci di menu. L'implementazione standard
CWinApp
prevede per impostazione predefinita il limite standard dei quattro file usati più di recente. È possibile modificare l'impostazione predefinita chiamandoCWinApp::LoadStdProfileSettings
con un valore maggiore o minore. L'elenco MRU viene archiviato nell'oggetto dell'applicazione. File INI. L'elenco viene caricato nella funzione dell'applicazioneInitInstance
se si chiamaLoadStdProfileSettings
e viene salvato quando l'applicazione viene chiusa. Il gestore dell'interfaccia utente dei comandi di aggiornamento MRU convertirà anche i percorsi assoluti in percorsi relativi per la visualizzazione nel menu file.CWinApp::OnOpenRecentFile
è il gestore ON_COMMAND che esegue il comando effettivo. Ottiene semplicemente il nome file dall'elenco MRU e chiamaCWinApp::OpenDocumentFile
, che esegue tutte le operazioni di apertura del file e l'aggiornamento dell'elenco MRU.La personalizzazione di questo gestore comandi non è consigliata.
ID_EDIT_CLEAR Cancella la selezione corrente
Attualmente non esiste alcuna implementazione standard per questo comando. È necessario implementare questa opzione per ogni
CView
classe derivata da .CEditView
fornisce un'implementazione di questo comando tramiteCEdit::Clear
. Il comando è disabilitato se non è presente alcuna selezione corrente.Se si sceglie di implementare questo comando, è consigliabile usare questo ID comando.
ID_EDIT_CLEAR_ALL Cancella l'intero documento.
Attualmente non esiste alcuna implementazione standard per questo comando. È necessario implementare questa opzione per ogni
CView
classe derivata da .Se si sceglie di implementare questo comando, è consigliabile usare questo ID comando. Per un esempio di implementazione, vedere l'esempio di esercitazione MFC SCRIBBLE .
ID_EDIT_COPY Copia la selezione corrente negli Appunti.
Attualmente non esiste alcuna implementazione standard per questo comando. È necessario implementare questa opzione per ogni
CView
classe derivata da .CEditView
fornisce un'implementazione di questo comando, che copia il testo attualmente selezionato negli Appunti come CF_TEXT usandoCEdit::Copy
. Il comando è disabilitato se non è presente alcuna selezione corrente.Se si sceglie di implementare questo comando, è consigliabile usare questo ID comando.
ID_EDIT_CUT Taglia la selezione corrente negli Appunti.
Attualmente non esiste alcuna implementazione standard per questo comando. È necessario implementare questa opzione per ogni
CView
classe derivata da .CEditView
fornisce un'implementazione di questo comando, che taglia il testo attualmente selezionato negli Appunti come CF_TEXT utilizzandoCEdit::Cut
. Il comando è disabilitato se non è presente alcuna selezione corrente.Se si sceglie di implementare questo comando, è consigliabile usare questo ID comando.
ID_EDIT_FIND Avvia l'operazione di ricerca, viene visualizzata la finestra di dialogo di ricerca senza modalità.
Attualmente non esiste alcuna implementazione standard per questo comando. È necessario implementare questa opzione per ogni
CView
classe derivata da .CEditView
fornisce un'implementazione di questo comando, che chiama la funzioneOnEditFindReplace
helper di implementazione per usare e archiviare le impostazioni di ricerca/sostituzione precedenti nelle variabili di implementazione privata. LaCFindReplaceDialog
classe viene usata per gestire la finestra di dialogo senza modalità per richiedere all'utente.Se si sceglie di implementare questo comando, è consigliabile usare questo ID comando.
ID_EDIT_PASTE Inserisce il contenuto corrente degli Appunti.
Attualmente non esiste alcuna implementazione standard per questo comando. È necessario implementare questa opzione per ogni
CView
classe derivata da .CEditView
fornisce un'implementazione di questo comando, che copia i dati degli Appunti correnti sostituendo il testo selezionato usandoCEdit::Paste
. Il comando è disabilitato se non sono presenti CF_TEXT negli Appunti.COleClientDoc
fornisce solo un gestore dell'interfaccia utente dei comandi di aggiornamento per questo comando. Se gli Appunti non contengono un elemento o un oggetto OLE incorporabile, il comando verrà disabilitato. L'utente è responsabile della scrittura del gestore per il comando effettivo per eseguire il incollamento effettivo. Se l'applicazione OLE può anche incollare altri formati, è necessario fornire il proprio gestore dell'interfaccia utente dei comandi di aggiornamento nella visualizzazione o nel documento, ovvero da qualche parte primaCOleClientDoc
del routing di destinazione del comando.Se si sceglie di implementare questo comando, è consigliabile usare questo ID comando.
Per sostituire l'implementazione OLE standard, usare
COleClientItem::CanPaste
.ID_EDIT_PASTE_LINK Inserisce un collegamento dal contenuto corrente degli Appunti.
Attualmente non esiste alcuna implementazione standard per questo comando. È necessario implementare questa opzione per ogni
CView
classe derivata da .COleDocument
fornisce solo un gestore dell'interfaccia utente dei comandi di aggiornamento per questo comando. Se gli Appunti non contengono elementi o oggetti OLE collegabili, il comando verrà disabilitato. L'utente è responsabile della scrittura del gestore per il comando effettivo per eseguire il incollamento effettivo. Se l'applicazione OLE può anche incollare altri formati, è necessario fornire il proprio gestore dell'interfaccia utente dei comandi di aggiornamento nella visualizzazione o nel documento, ovvero da qualche parte primaCOleDocument
del routing di destinazione del comando.Se si sceglie di implementare questo comando, è consigliabile usare questo ID comando.
Per sostituire l'implementazione OLE standard, usare
COleClientItem::CanPasteLink
.ID_EDIT_PASTE_SPECIAL Inserisce il contenuto corrente degli Appunti con le opzioni.
Attualmente non esiste alcuna implementazione standard per questo comando. È necessario implementare questa opzione per ogni
CView
classe derivata da . MFC non fornisce questa finestra di dialogo.Se si sceglie di implementare questo comando, è consigliabile usare questo ID comando.
ID_EDIT_REPEAT Ripete l'ultima operazione.
Attualmente non esiste alcuna implementazione standard per questo comando. È necessario implementare questa opzione per ogni
CView
classe derivata da .CEditView
fornisce un'implementazione di questo comando per ripetere l'ultima operazione di ricerca. Vengono usate le variabili di implementazione private per l'ultima ricerca. Il comando è disabilitato se non è possibile provare a trovare.Se si sceglie di implementare questo comando, è consigliabile usare questo ID comando.
ID_EDIT_REPLACE Avvia l'operazione di sostituzione, viene visualizzata la finestra di dialogo di sostituzione senza modalità.
Attualmente non esiste alcuna implementazione standard per questo comando. È necessario implementare questa opzione per ogni
CView
classe derivata da .CEditView
fornisce un'implementazione di questo comando, che chiama la funzioneOnEditFindReplace
helper di implementazione per usare e archiviare le impostazioni di ricerca/sostituzione precedenti nelle variabili di implementazione privata. LaCFindReplaceDialog
classe viene usata per gestire la finestra di dialogo senza modalità che richiede all'utente.Se si sceglie di implementare questo comando, è consigliabile usare questo ID comando.
ID_EDIT_edizione StandardLECT_ALL Seleziona l'intero documento.
Attualmente non esiste alcuna implementazione standard per questo comando. È necessario implementare questa opzione per ogni
CView
classe derivata da .CEditView
fornisce un'implementazione di questo comando, che seleziona tutto il testo nel documento. Il comando è disabilitato se non è presente testo da selezionare.Se si sceglie di implementare questo comando, è consigliabile usare questo ID comando.
ID_EDIT_UNDO Annulla l'ultima operazione.
Attualmente non esiste alcuna implementazione standard per questo comando. È necessario implementare questa opzione per ogni
CView
classe derivata da .CEditView
fornisce un'implementazione di questo comando usandoCEdit::Undo
. Il comando è disabilitato seCEdit::CanUndo
restituisce FAL edizione Standard.Se si sceglie di implementare questo comando, è consigliabile usare questo ID comando.
ID_EDIT_REDO ripristina l'ultima operazione.
Attualmente non esiste alcuna implementazione standard per questo comando. È necessario implementare questa opzione per ogni
CView
classe derivata da .Se si sceglie di implementare questo comando, è consigliabile usare questo ID comando.
ID_WINDOW_NEW Apre un'altra finestra nel documento attivo.
CMDIFrameWnd::OnWindowNew
implementa questa potente funzionalità usando il modello di documento del documento corrente per creare un'altra cornice contenente un'altra visualizzazione del documento corrente.Analogamente alla maggior parte dei comandi di menu finestra MDI (Document Interface), il comando viene disabilitato se non è presente una finestra figlio MDI attiva.
La personalizzazione di questo gestore comandi non è consigliata. Se si desidera fornire un comando che crea visualizzazioni o finestre cornice aggiuntive, probabilmente sarà meglio inventare il proprio comando. È possibile clonare il codice da
CMDIFrameWnd::OnWindowNew
e modificarlo in base alla cornice e alle classi di visualizzazione specifiche delle proprie esigenze.ID_WINDOW_ARRANGE dispone le icone nella parte inferiore di una finestra MDI.
CMDIFrameWnd
implementa questo comando MDI standard in una funzioneOnMDIWindowCmd
helper di implementazione . Questo helper esegue il mapping degli ID comando ai messaggi WINDOWS MDI e può quindi condividere un sacco di codice.Analogamente alla maggior parte dei comandi di menu finestra MDI, il comando è disabilitato se non è presente alcuna finestra figlio MDI attiva.
La personalizzazione di questo gestore comandi non è consigliata.
ID_WINDOW_CASCADE finestre a catena in modo che si sovrappongano.
CMDIFrameWnd
implementa questo comando MDI standard in una funzioneOnMDIWindowCmd
helper di implementazione . Questo helper esegue il mapping degli ID comando ai messaggi WINDOWS MDI e può quindi condividere un sacco di codice.Analogamente alla maggior parte dei comandi di menu finestra MDI, il comando è disabilitato se non è presente alcuna finestra figlio MDI attiva.
La personalizzazione di questo gestore comandi non è consigliata.
ID_WINDOW_TILE_HORZ finestre Riquadri orizzontalmente.
Questo comando viene implementato come
CMDIFrameWnd
ID_WINDOW_CASCADE, ad eccezione di un messaggio MDI diverso per l'operazione.È consigliabile selezionare l'orientamento predefinito del riquadro per l'applicazione. A tale scopo, è possibile modificare l'ID della voce di menu "Riquadro" della finestra in ID_WINDOW_TILE_HORZ o ID_WINDOW_TILE_VERT.
ID_WINDOW_TILE_VERT finestre Riquadri verticalmente.
Questo comando viene implementato come
CMDIFrameWnd
ID_WINDOW_CASCADE, ad eccezione di un messaggio MDI diverso per l'operazione.È consigliabile selezionare l'orientamento predefinito del riquadro per l'applicazione. A tale scopo, è possibile modificare l'ID della voce di menu "Riquadro" della finestra in ID_WINDOW_TILE_HORZ o ID_WINDOW_TILE_VERT.
ID_WINDOW_SPLIT interfaccia della tastiera da dividere.
CView
gestisce questo comando per l'implementazioneCSplitterWnd
. Se la vista fa parte di una finestra di divisione, questo comando delega alla funzioneCSplitterWnd::DoKeyboardSplit
di implementazione . In questo modo il separatore verrà inserito in una modalità che consentirà agli utenti della tastiera di dividere o rimuovere una finestra di divisione.Questo comando è disabilitato se la visualizzazione non si trova in un separatore.
La personalizzazione di questo gestore comandi non è consigliata.
ID_APP_ABOUT richiama la finestra di dialogo Informazioni su.
Non è disponibile alcuna implementazione standard per la casella About di un'applicazione. L'applicazione predefinita creata da AppWizard creerà una classe di dialogo personalizzata per l'applicazione e la userà come casella Informazioni. AppWizard scriverà anche il gestore dei comandi semplice che gestisce questo comando e richiama il dialogo.
Questo comando verrà quasi sempre implementato.
ID_APP_EXIT Uscire dall'applicazione.
CWinApp::OnAppExit
gestisce questo comando inviando un messaggio di WM_CLOedizione Standard alla finestra principale dell'applicazione. L'arresto standard dell'applicazione (richiesta di file dirty e così via) viene gestito dall'implementazioneCFrameWnd
.La personalizzazione di questo gestore comandi non è consigliata. È consigliabile eseguire l'override
CWinApp::SaveAllModified
o la logica diCFrameWnd
chiusura.Se si sceglie di implementare questo comando, è consigliabile usare questo ID comando.
ID_HELP_INDEX Elenca gli argomenti della Guida da . File HLP.
Nota
Per abilitare questa funzionalità, è necessario connettersi alla
CWinApp
mappa messaggi della classe derivata da .CWinApp::OnHelpIndex
gestisce questo comando chiamandoCWinApp::WinHelp
in modo semplice .La personalizzazione di questo gestore comandi non è consigliata.
ID_HELP_USING Visualizza la Guida su come usare la Guida.
Nota
Per abilitare questa funzionalità, è necessario connettersi alla
CWinApp
mappa messaggi della classe derivata da .CWinApp::OnHelpUsing
gestisce questo comando chiamandoCWinApp::WinHelp
in modo semplice .La personalizzazione di questo gestore comandi non è consigliata.
ID_CONTEXT_HELP passa alla modalità guida MAIUSC-F1.
Nota
Per abilitare questa funzionalità, è necessario connettersi alla
CWinApp
mappa messaggi della classe derivata da .CWinApp::OnContextHelp
gestisce questo comando impostando il cursore in modalità Guida, immettendo un ciclo modale e attendendo che l'utente selezioni una finestra per ottenere assistenza. Per altre informazioni sull'implementazione della Guida MFC, vedere la Nota tecnica 28 .La personalizzazione di questo gestore comandi non è consigliata.
ID_HELP Fornisce assistenza sul contesto corrente
Nota
Per abilitare questa funzionalità, è necessario connettersi alla
CWinApp
mappa messaggi della classe derivata da .CWinApp::OnHelp
gestisce questo comando ottenendo il contesto della Guida corretto per il contesto dell'applicazione corrente. Questa operazione gestisce la guida F1 semplice, la Guida sulle finestre di messaggio e così via. Per altre informazioni sull'implementazione della Guida MFC, vedere la Nota tecnica 28 .La personalizzazione di questo gestore comandi non è consigliata.
ID_DEFAULT_HELP Visualizza la Guida predefinita per il contesto
Nota
Per abilitare questa funzionalità, è necessario connettersi alla
CWinApp
mappa messaggi della classe derivata da .Questo comando viene in genere mappato a
CWinApp::OnHelpIndex
.Se si desidera una distinzione tra la Guida predefinita e l'indice della Guida, è possibile specificare un gestore di comandi diverso.
ID_NEXT_PANE Passa al riquadro successivo
CView
gestisce questo comando per l'implementazioneCSplitterWnd
. Se la vista fa parte di una finestra di divisione, questo comando delega alla funzioneCSplitterWnd::OnNextPaneCmd
di implementazione . In questo modo la visualizzazione attiva verrà spostata nel riquadro successivo nel separatore.Questo comando è disabilitato se la visualizzazione non si trova in un separatore o non è presente alcun riquadro successivo a cui passare.
La personalizzazione di questo gestore comandi non è consigliata.
ID_PREV_PANE Passa al riquadro precedente
CView
gestisce questo comando per l'implementazioneCSplitterWnd
. Se la vista fa parte di una finestra di divisione, questo comando delega alla funzioneCSplitterWnd::OnNextPaneCmd
di implementazione . In questo modo la visualizzazione attiva verrà spostata nel riquadro precedente nel separatore.Questo comando è disabilitato se la visualizzazione non si trova in un separatore o non è presente alcun riquadro precedente a cui passare.
La personalizzazione di questo gestore comandi non è consigliata.
ID_OLE_INedizione StandardRT_NEW Inserisce un nuovo oggetto OLE
Attualmente non esiste alcuna implementazione standard per questo comando. È necessario implementare questa opzione per la
CView
classe derivata da per inserire un nuovo elemento/oggetto OLE nella selezione corrente.Tutte le applicazioni client OLE devono implementare questo comando. AppWizard, con l'opzione OLE, creerà uno scheletro di implementazione di nella classe di
OnInsertObject
visualizzazione che sarà necessario completare.Per un'implementazione completa di questo comando, vedere l'esempio OCLIENT di esempio OLE MFC.
ID_OLE_EDIT_LINKS Modifica collegamenti OLE
COleDocument
gestisce questo comando usando l'implementazione fornita da MFC della finestra di dialogo collegamenti OLE standard. L'implementazione di questa finestra di dialogo è accessibile tramite laCOleLinksDialog
classe . Se il documento corrente non contiene collegamenti, il comando è disabilitato.La personalizzazione di questo gestore comandi non è consigliata.
ID_OLE_VERB_FIRST... LAST Intervallo ID per verbi OLE
COleDocument
usa questo intervallo di ID comando per i verbi supportati dall'elemento/oggetto OLE attualmente selezionato. Deve trattarsi di un intervallo perché un determinato tipo di elemento/oggetto OLE può supportare zero o più verbi personalizzati. Nel menu dell'applicazione dovrebbe essere presente una voce di menu con l'ID di ID_OLE_VERB_FIRST. Quando il programma viene eseguito, il menu verrà aggiornato con la descrizione del verbo del menu appropriata (o menu a comparsa con molti verbi). La gestione del menu OLE viene gestita daAfxOleSetEditMenu
, eseguita nel gestore dell'interfaccia utente dei comandi di aggiornamento per questo comando.Non esistono gestori di comandi espliciti per la gestione di ogni ID comando in questo intervallo.
COleDocument::OnCmdMsg
viene sottoposto a override per intercettare tutti gli ID comando in questo intervallo, trasformarli in numeri verbi in base zero e avviare il server per tale verbo (usandoCOleClientItem::DoVerb
).Non è consigliabile personalizzare o usare un altro intervallo di ID comando.
ID_VIEW_TOOLBAR attiva e disattiva la barra degli strumenti
CFrameWnd
gestisce questo comando e il gestore dell'interfaccia utente di update-command per attivare o disattivare lo stato visibile della barra degli strumenti. La barra degli strumenti deve essere una finestra figlio della cornice con ID finestra figlio di AFX_IDW_TOOLBAR. Il gestore dei comandi attiva effettivamente la visibilità della finestra della barra degli strumenti.CFrameWnd::RecalcLayout
viene utilizzato per ridisegnare la finestra cornice con la barra degli strumenti nel nuovo stato. Il gestore dell'interfaccia utente di update-command controlla la voce di menu quando la barra degli strumenti è visibile.La personalizzazione di questo gestore comandi non è consigliata. Se vuoi aggiungere altre barre degli strumenti, vuoi clonare e modificare il gestore dei comandi e il gestore dell'interfaccia utente del comando update per questo comando.
ID_VIEW_STATUS_BAR attiva e disattiva la barra di stato
Questo comando viene implementato come
CFrameWnd
ID_VIEW_TOOLBAR, ad eccezione di un ID finestra figlio diverso (AFX_IDW_STATUS_BAR) usato.
Gestori dei comandi di sola aggiornamento
Diversi ID comando standard vengono usati come indicatori nelle barre di stato. Questi usano lo stesso meccanismo di gestione dell'interfaccia utente dei comandi di aggiornamento per visualizzare lo stato di visualizzazione corrente durante il tempo di inattività dell'applicazione. Poiché non possono essere selezionati dall'utente (ovvero non è possibile eseguire il push di un riquadro della barra di stato), non è opportuno disporre di un gestore ON_COMMAND per questi ID comando.
ID_INDICATOR_Cpiattaforma di strumenti analitici : indicatore di blocco CAP.
ID_INDICATOR_NUM : indicatore di blocco NUM.
ID_INDICATOR_SCRL: indicatore di blocco SCRL.
ID_INDICATOR_KANA: indicatore di blocco KANA (applicabile solo ai sistemi giapponesi).
Tutti e tre questi vengono implementati in CFrameWnd::OnUpdateKeyIndicator
, un helper di implementazione che usa l'ID comando per eseguire il mapping alla chiave virtuale appropriata. Un'implementazione comune abilita o disabilita (per i riquadri di stato disabilitati = nessun testo) a CCmdUI
seconda che la chiave virtuale appropriata sia attualmente bloccata.
La personalizzazione di questo gestore comandi non è consigliata.
ID_INDICATOR_EXT: indicatore di selezione automatica.
ID_INDICATOR_OVR : indicatore OVeRstrike.
ID_INDICATOR_REC: indicatore RECording.
Attualmente non esiste alcuna implementazione standard per questi indicatori.
Se si sceglie di implementare questi indicatori, è consigliabile usare questi ID indicatore e mantenere l'ordinamento degli indicatori nella barra di stato (ovvero, in questo ordine: EXT, CAP, NUM, SCRL, OVR, REC).