Condividi tramite


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 CWinAppmappa 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 un CDocTemplatesolo 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 selezionato CDocTemplate 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 di CWinApp::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 CWinAppmappa messaggi della classe derivata da .

    CWinApp::OnFileOpen ha un'implementazione molto semplice della chiamata CWinApp::DoPromptFileName seguita da CWinApp::OpenDocumentFile con il nome del file o del percorso del file da aprire. La CWinApp routine DoPromptFileName 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 chiama CDocument::SaveModified per chiedere all'utente di salvare il documento se è stato modificato e quindi chiama OnCloseDocument. Tutta la logica di chiusura, inclusa l'eliminazione del documento, viene eseguita nella OnCloseDocument 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 che OnFileSaveAsper OnFileSave . 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, la OnFileSave 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 funzione OnSaveDocumentvirtuale .

    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::SetModifiedFlagmai ) 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 , COleServerDocID_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 predefinitaCDocument, è consigliabile eseguire l'override CDocument::OnSaveDocument anziché .OnFileSave

  • ID_FILE_SAVE_AS Salva il documento corrente con un nome di file diverso.

    L'implementazione CDocument::OnFileSaveAs usa la stessa CDocument::DoSave routine helper di OnFileSave. Il OnFileSaveAs 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 a CDocument::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 CWinAppmappa 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 un CPrintDialog oggetto e chiama la CWinApp::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 un CPrintDialog oggetto, lo inizializza con gli attributi della stampante appropriati (in genere hDevMode e hDevNames), chiamare CPrintDialog::DoModale salvare le impostazioni della stampante modificate. Per un'implementazione affidabile, è consigliabile esaminare l'implementazione di CWinApp::DoPrintDialog per rilevare gli errori e CWinApp::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 CViewmappa 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 virtuale CView::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'escape StartDoc alla stampante. CView::OnFilePrint contiene anche il ciclo di stampa orientato alla pagina principale. Per ogni pagina, chiama il virtuale CView::OnPrepareDC seguito da un StartPage escape e chiama il virtuale CView::OnPrint per tale pagina. Al termine, viene chiamato il metodo virtuale CView::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 CViewmappa messaggi della classe derivata da .

    CView::OnFilePrintPreview avvia la modalità di anteprima di stampa chiamando la funzione CView::DoPrintPreviewhelper documentata . CView::DoPrintPreview è il motore principale per il ciclo di anteprima di stampa, proprio come OnFilePrint è 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 chiamando CWinApp::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'applicazione InitInstance se si chiama LoadStdProfileSettingse 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 chiama CWinApp::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 CViewclasse derivata da .

    CEditView fornisce un'implementazione di questo comando tramite CEdit::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 CViewclasse 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 CViewclasse derivata da .

    CEditView fornisce un'implementazione di questo comando, che copia il testo attualmente selezionato negli Appunti come CF_TEXT usando CEdit::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 CViewclasse derivata da .

    CEditView fornisce un'implementazione di questo comando, che taglia il testo attualmente selezionato negli Appunti come CF_TEXT utilizzando CEdit::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 CViewclasse derivata da .

    CEditView fornisce un'implementazione di questo comando, che chiama la funzione OnEditFindReplace helper di implementazione per usare e archiviare le impostazioni di ricerca/sostituzione precedenti nelle variabili di implementazione privata. La CFindReplaceDialog 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 CViewclasse derivata da .

    CEditView fornisce un'implementazione di questo comando, che copia i dati degli Appunti correnti sostituendo il testo selezionato usando CEdit::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 prima COleClientDoc 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 CViewclasse 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 prima COleDocument 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 CViewclasse 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 CViewclasse 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 CViewclasse derivata da .

    CEditView fornisce un'implementazione di questo comando, che chiama la funzione OnEditFindReplace helper di implementazione per usare e archiviare le impostazioni di ricerca/sostituzione precedenti nelle variabili di implementazione privata. La CFindReplaceDialog 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 CViewclasse 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 CViewclasse derivata da .

    CEditView fornisce un'implementazione di questo comando usando CEdit::Undo. Il comando è disabilitato se CEdit::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 CViewclasse 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 funzione OnMDIWindowCmdhelper 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 funzione OnMDIWindowCmdhelper 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'implementazione CSplitterWnd . Se la vista fa parte di una finestra di divisione, questo comando delega alla funzione CSplitterWnd::DoKeyboardSplitdi 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::OnAppExitgestisce 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'implementazione CFrameWnd .

    La personalizzazione di questo gestore comandi non è consigliata. È consigliabile eseguire l'override CWinApp::SaveAllModified o la logica di CFrameWnd 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 CWinAppmappa messaggi della classe derivata da .

    CWinApp::OnHelpIndex gestisce questo comando chiamando CWinApp::WinHelpin 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 CWinAppmappa messaggi della classe derivata da .

    CWinApp::OnHelpUsing gestisce questo comando chiamando CWinApp::WinHelpin 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 CWinAppmappa 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 CWinAppmappa 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 CWinAppmappa 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'implementazione CSplitterWnd . Se la vista fa parte di una finestra di divisione, questo comando delega alla funzione CSplitterWnd::OnNextPaneCmddi 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'implementazione CSplitterWnd . Se la vista fa parte di una finestra di divisione, questo comando delega alla funzione CSplitterWnd::OnNextPaneCmddi 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 CViewclasse 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 la COleLinksDialog 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 da AfxOleSetEditMenu, 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 (usando COleClientItem::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).

Vedi anche

Note tecniche per numero
Note tecniche per categoria