Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Annotazioni
La nota tecnica seguente non è stata aggiornata perché è stata inclusa per la prima volta nella documentazione online. Di conseguenza, alcune procedure e argomenti potrebbero non essere aggiornati o non corretti. 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++.
Il 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 predefiniti è predisposta nella mappa dei messaggi della classe 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 maiuscolo con trattini di sottolineatura per separare le parole. 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.
Annotazioni
Per abilitare questa funzionalità, è necessario connettere questo alla mappa messaggi della tua classe derivata
CWinApp
.CWinApp::OnFileNew
implementa questo comando in modo diverso a seconda del numero di modelli di documento nell'applicazione. Se è presente un soloCDocTemplate
,CWinApp::OnFileNew
creerà un nuovo documento di tale tipo, oltre a creare la classe di cornice e di 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 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_SHEET.
ID_FILE_OPEN Apre un documento esistente.
Annotazioni
Per abilitare questa funzionalità, è necessario connettere questo alla mappa messaggi della tua classe derivata
CWinApp
.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_CLOSE 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.Annotazioni
ID_FILE_CLOSE agisce in modo diverso da un messaggio di WM_CLOSE o da un comando di sistema SC_CLOSE inviato alla finestra cornice 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_CLOSE 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 utilizzata sia perOnFileSave
che perOnFileSaveAs
. 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. Inoltre, assicurati di non sporcare mai il documento (ovvero, non chiamare mai
CDocument::SetModifiedFlag
), in modo che il framework non causi 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
utilizza la stessaCDocument::DoSave
routine di supporto 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_SETUP richiama una finestra di dialogo di configurazione/layout di 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 l'ID del comando.
ID_FILE_PRINT_SETUP Apre la finestra di dialogo per la configurazione di stampa standard.
Annotazioni
Per abilitare questa funzionalità, è necessario connettere questo alla mappa messaggi della tua classe derivata
CWinApp
.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
Annotazioni
Per abilitare questa funzionalità, è necessario connettere questo alla mappa messaggi della tua classe derivata
CView
.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 contesto di output per la stampante, visualizza la finestra di dialogo di avanzamento stampa (AFX_IDD_PRINTDLG) e invia il comando di 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 agganciare 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.
Annotazioni
Per abilitare questa funzionalità, è necessario connettere questo alla mappa messaggi della tua classe derivata
CView
.CView::OnFilePrintPreview
avvia la modalità di anteprima di stampa chiamando la funzione documentata di supportoCView::DoPrintPreview
.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 File MRU.
CWinApp::OnUpdateRecentFileMenu
è un gestore dell'interfaccia utente per i comandi di aggiornamento, uno degli utilizzi più avanzati del meccanismo 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 nel file .INI dell'applicazione. 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 l'ID del 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 l'ID del 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 l'ID del 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 l'ID del comando.
ID_EDIT_FIND Avvia l'operazione di ricerca e visualizza la finestra di dialogo di ricerca non modale.
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. La classeCFindReplaceDialog
viene utilizzata per gestire la finestra di dialogo non modale che sollecita l'utente.Se si sceglie di implementare questo comando, è consigliabile usare l'ID del 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 è presente CF_TEXT nel Clipboard.COleClientDoc
fornisce soltanto un gestore dell'interfaccia utente per il comando di aggiornamento. 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 reale destinato all'incollamento effettivo. Se la tua applicazione OLE può anche incollare altri formati, dovresti fornire un gestore aggiornato dell'interfaccia utente dei comandi all'interno della vista o del documento, ovvero da qualche parte prima diCOleClientDoc
nel percorso di destinazione del comando.Se si sceglie di implementare questo comando, è consigliabile usare l'ID del 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 soltanto un gestore dell'interfaccia utente per il comando di aggiornamento. Se gli Appunti non contengono elementi o oggetti OLE collegabili, il comando verrà disabilitato. L'utente è responsabile della scrittura del gestore per il comando reale destinato all'incollamento effettivo. Se la tua applicazione OLE può anche incollare altri formati, dovresti fornire un gestore aggiornato dell'interfaccia utente dei comandi all'interno della vista o del documento, ovvero da qualche parte prima diCOleDocument
nel percorso di destinazione del comando.Se si sceglie di implementare questo comando, è consigliabile usare l'ID del 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 l'ID del 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 l'ID del comando.
ID_EDIT_REPLACE Avvia l'operazione di sostituzione e apre la finestra di dialogo di sostituzione non bloccante.
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. La classeCFindReplaceDialog
viene usata per gestire la finestra di dialogo non modale che richiede all'utente.Se si sceglie di implementare questo comando, è consigliabile usare l'ID del comando.
ID_EDIT_SELECT_ALL Consente di selezionare 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 l'ID del 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 FALSE.Se si sceglie di implementare questo comando, è consigliabile usare l'ID del comando.
ID_EDIT_REDO rifà 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 l'ID del 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 funzione di aiuto per l'implementazioneOnMDIWindowCmd
. 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 cascata in modo che si sovrappongano.
CMDIFrameWnd
implementa questo comando MDI standard in una funzione di aiuto per l'implementazioneOnMDIWindowCmd
. 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 in
CMDIFrameWnd
proprio come ID_WINDOW_CASCADE, solo che viene utilizzato 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 dispone le finestre verticalmente.
Questo comando viene implementato in
CMDIFrameWnd
proprio come ID_WINDOW_CASCADE, solo che viene utilizzato 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.
Interfaccia tastiera per il divisore.
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 sull'applicazione.
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 WM_CLOSE 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 sovrascrivere
CWinApp::SaveAllModified
oCFrameWnd
la logica di chiusura.Se si sceglie di implementare questo comando, è consigliabile usare l'ID del comando.
ID_HELP_INDEX Elenca gli argomenti della Guida dal file .HLP.
Annotazioni
Per abilitare questa funzionalità, è necessario connettere questo alla mappa messaggi della tua classe derivata
CWinApp
.CWinApp::OnHelpIndex
gestisce questo comando chiamandoCWinApp::WinHelp
in modo semplice .La personalizzazione di questo gestore comandi non è consigliata.
ID_HELP_USING Visualizza le istruzioni su come utilizzare la Guida.
Annotazioni
Per abilitare questa funzionalità, è necessario connettere questo alla mappa messaggi della tua classe derivata
CWinApp
.CWinApp::OnHelpUsing
gestisce questo comando chiamandoCWinApp::WinHelp
in modo semplice .La personalizzazione di questo gestore comandi non è consigliata.
ID_CONTEXT_HELP entra in modalità aiuto di SHIFT-F1.
Annotazioni
Per abilitare questa funzionalità, è necessario connettere questo alla mappa messaggi della tua classe derivata
CWinApp
.CWinApp::OnContextHelp
gestisce questo comando impostando il cursore in modalità Guida, avviando un ciclo modale e aspettando che l'utente selezioni una finestra per ricevere 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
Annotazioni
Per abilitare questa funzionalità, è necessario connettere questo alla mappa messaggi della tua classe derivata
CWinApp
.CWinApp::OnHelp
gestisce questo comando ottenendo il contesto della Guida corretto per il contesto dell'applicazione corrente. Questa operazione gestisce la guida semplice tramite F1, la guida sulle finestre di dialogo e così via. Per ulteriori dettagli sull'implementazione della Guida MFC, fare riferimento alla Nota tecnica 28.La personalizzazione di questo gestore comandi non è consigliata.
ID_DEFAULT_HELP Visualizza l'help predefinita per il contesto
Annotazioni
Per abilitare questa funzionalità, è necessario connettere questo alla mappa messaggi della tua classe derivata
CWinApp
.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_INSERT_NEW Inserisce un nuovo oggetto OLE
Attualmente non esiste alcuna implementazione standard per questo comando. Devi implementare questo nella tua classe derivata
CView
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à un'implementazione scheletrica di
OnInsertObject
nella classe di 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 appropriata del verbo (o con un menu a comparsa contenente 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 di comando in questo intervallo, trasformarli in numeri di verbi basati su zero e avviare il server per quel verbo (usandoCOleClientItem::DoVerb
).Non è consigliabile personalizzare o utilizzare questo 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 subordinata del frame, con ID finestra figlia 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 "update-command" seleziona 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 in
CFrameWnd
proprio come ID_VIEW_TOOLBAR, ad eccezione dell'uso di un ID diverso per la finestra figlia (AFX_IDW_STATUS_BAR).
gestori comandi Update-Only
Diversi ID comando standard vengono usati come indicatori nelle barre di stato. Questi utilizzano lo stesso meccanismo di gestione dei comandi di aggiornamento dell'interfaccia utente per visualizzare il loro stato visivo corrente durante il periodo 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_CAPS: 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 l'oggetto CCmdUI
(per i riquadri di stato disabilitati = nessun testo) a seconda che la chiave virtuale appropriata sia attualmente bloccata.
La personalizzazione di questo gestore comandi non è consigliata.
ID_INDICATOR_EXT: indicatore di selezione esteso.
ID_INDICATOR_OVR : indicatore OVeRstrike.
ID_INDICATOR_REC: indicatore di registrazione.
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).