La classe CFrameWnd fornisce la funzionalità di un interfaccia del documento unico di Windows (SDI) sovrapposto o finestra pop-up cornice, insieme ai membri per la gestione della finestra.
Per creare una finestra cornice utili per la vostra applicazione, derivare una classe da CFrameWnd. Aggiungere le variabili membro alla classe derivata per memorizzare i dati specifici dell'applicazione. Mappa di implementare funzioni di gestione dei messaggi membro e un messaggio nella classe derivata per specificare cosa succede quando i messaggi vengono indirizzati alla finestra.
Ci sono tre modi per costruire una finestra cornice:
Indirettamente costruire utilizzando un modello di documento.
Prima di chiamare o Create o LoadFrame, è necessario costruire l'oggetto finestra cornice sull'heap utilizzando l'operatore new C++. Prima di chiamare Create, è possibile registrare una classe finestra con la funzione globale AfxRegisterWndClass per impostare gli stili icona e di classe per il frame.
Utilizzare la funzione membro Create per passare i parametri di creazione del telaio come argomenti immediati.
LoadFrame richiede un minor numero di argomenti che Creae invece recupera i valori predefiniti per la maggior parte da risorse, compresa la didascalia del telaio, icona, tabella acceleratore e menu. Per essere accessibile da LoadFrame, tutte queste risorse devono avere lo stesso ID di risorsa (ad esempio, IDR_MAINFRAME).
Quando un oggetto CFrameWnd contiene documenti e visualizzazioni, essi vengono creati indirettamente dal framework anziché direttamente dal programmatore. L'oggetto CDocTemplate Orchestra la creazione della cornice, la creazione delle viste che contengono e la connessione delle viste al documento appropriato. I parametri del costruttore CDocTemplate specificano CRuntimeClass delle tre classi coinvolte (documento, telaio e vista). Un oggetto CRuntimeClass viene utilizzato dal framework per creare dinamicamente nuovi fotogrammi quando specificato dall'utente (ad esempio, utilizzando il comando Nuovo File o il comando nuova finestra del multiple documento interface (MDI)).
Una classe finestra cornice derivata da CFrameWnd deve essere dichiarata con DECLARE_DYNCREATE in modo che il meccanismo RUNTIME_CLASS sopra lavorare correttamente.
Un CFrameWnd contiene le implementazioni predefinite di svolgere le seguenti funzioni di una finestra principale in una tipica applicazione per Windows:
Una finestra cornice CFrameWnd tiene traccia di una vista attualmente attiva la finestra attiva di Windows o il focus corrente di ingresso indipendente. Quando viene riattivato il telaio, la visualizzazione attiva viene notificata chiamando CView::OnActivateView.
Messaggi di comando e molti messaggi di notifica di telaio comuni, compresi quelli gestiti dalla OnSetFocus, OnHScrolle OnVScroll funzioni di CWnd, vengono delegati da una finestra cornice CFrameWnd alla visualizzazione attualmente attiva.
La vista attualmente attivo (o attualmente attiva finestra cornice figlio MDI nel caso di un frame MDI) può determinare la didascalia della finestra cornice. Questa funzionalità può essere disabilitata disattivando il bit di stile FWS_ADDTOTITLE della finestra cornice.
Una finestra cornice CFrameWnd gestisce il posizionamento delle altre finestre figlio all'interno di area client della finestra cornice, viste e le barre di controllo. Una finestra cornice fa anche periodi di inattività l'aggiornamento della barra degli strumenti e altri pulsanti della barra di controllo. Una finestra cornice CFrameWnd ha anche le implementazioni predefinite di comandi per la commutazione e disattivare la barra degli strumenti e lo status bar.
Una finestra cornice CFrameWnd gestisce la barra dei menu principale. Quando viene visualizzato un menu a comparsa, la finestra cornice utilizza il meccanismo UPDATE_COMMAND_UI per determinare quali voci di menu dovrebbero essere abilitate, disabilitate o controllate. Quando l'utente seleziona una voce di menu, finestra cornice aggiorna la barra di stato con la stringa del messaggio per quel comando.
Una finestra cornice CFrameWnd ha una tabella di acceleratore facoltativa che traduce automaticamente i tasti di scelta rapida.
Una finestra cornice CFrameWnd ha un optional aiutare ID impostato con LoadFrame che viene utilizzato per la guida sensibile al contesto. Una finestra cornice è il principale orchestratore di Stati semimodali come guida sensibile al contesto (Maiusc + F1) e la modalità di anteprima di stampa.
Una finestra cornice CFrameWnd viene aperto un file trascinato da File Manager e rilasciato sulla finestra del frame. Se un'estensione di file è registrata e connesso con l'applicazione, la finestra cornice risponde alla richiesta di dynamic data exchange (DDE) aperta che si verifica quando l'utente apre un file di dati nel File Manager o quando viene chiamata la funzione di Windows ShellExecute.
Se la finestra cornice è la finestra principale dell'applicazione (cioè CWinThread::m_pMainWnd), quando l'utente chiude l'applicazione, la finestra cornice richiede all'utente di salvare tutti i documenti modificati (per OnClose e OnQueryEndSession).
Se la finestra cornice è la finestra principale dell'applicazione, la finestra cornice è il contesto per l'esecuzione di WinHelp. Chiudendo la finestra cornice si spegnerà WINHELP.EXE se esso è stato lanciato per aiuto per questa applicazione.
Non utilizzare l'operatore delete C++ per distruggere una finestra cornice. Utilizzare CWnd:: DestroyWindow . L'implementazione di CFrameWnd di PostNcDestroy eliminerà l'oggetto C++ quando la finestra viene distrutto. Quando l'utente chiude la finestra cornice, gestore predefinito OnClose chiamerà DestroyWindow.
Per ulteriori informazioni su CFrameWnd, vedere Frame Window argomenti nel manuale del programmatore di Visual C++.