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.
Le applicazioni MFC usano in genere l'architettura di documento/visualizzazione per gestire informazioni, formati di file e la rappresentazione visiva dei dati agli utenti. Per la maggior parte delle applicazioni desktop, l'architettura di documento/visualizzazione è un'architettura di applicazione appropriata ed efficiente. Questa architettura separa i dati dalla visualizzazione e, nella maggior parte dei casi, semplifica l'applicazione e riduce il codice ridondante.
Tuttavia, l'architettura di documento/visualizzazione non è appropriata per alcune situazioni. Considerare i seguenti esempi:
Se si sta eseguendo la conversione di un'applicazione scritta in C per Windows, si consiglia di completare il porting prima di aggiungere il supporto documenti/visualizzazioni all'applicazione.
Se si scrive un'utilità leggera, è possibile eseguire operazioni senza l'architettura di documento/visualizzazione.
Se il codice originale combina già la gestione dei dati con la visualizzazione dei dati, spostare il codice nel modello di documento/visualizzazione non vale la pena perché è necessario separarli. È consigliabile lasciare invariato il codice.
Per creare un'applicazione che non usa l'architettura di documento/visualizzazione, deselezionare la casella di controllo Supporto architettura documento/visualizzazione al passaggio 1 della Creazione guidata dell'applicazione MFC. Per informazioni dettagliate, vedere Creazione guidata applicazione MFC .
Annotazioni
Le applicazioni basate su dialoghi generate dalla Creazione guidata applicazioni MFC non usano l'architettura documento/visualizzazione, pertanto la casella di controllo Supporto architettura documento/visualizzazione è disabilitata se si seleziona il tipo di applicazione dialogo.
Le procedure guidate di Visual C++, nonché gli editor di origine e di dialogo, funzionano con l'applicazione generata esattamente come con qualsiasi altra applicazione generata dalla procedura guidata. L'applicazione può supportare barre degli strumenti, barre di scorrimento e una barra di stato e una casella Informazioni su . L'applicazione non registrerà alcun modello di documento e non conterrà una classe documento.
Si noti che l'applicazione generata ha una classe di visualizzazione, CChildView
, derivata da CWnd
. MFC crea e posiziona un'istanza della classe di visualizzazione all'interno delle finestre cornice create dall'applicazione. MFC applica comunque l'uso di una finestra di visualizzazione, perché semplifica il posizionamento e la gestione del contenuto dell'applicazione. È possibile aggiungere codice di disegno al OnPaint
membro di questa classe. Il codice deve aggiungere barre di scorrimento alla visualizzazione anziché al frame.
Poiché l'architettura di documento/visualizzazione fornita da MFC è responsabile dell'implementazione di molte delle funzionalità di base di un'applicazione, la sua assenza nel progetto significa che l'utente è responsabile dell'implementazione di molte funzionalità importanti dell'applicazione:
Come fornito dalla Creazione guidata applicazione MFC, il menu per l'applicazione contiene solo i comandi Nuovo e Esci sul menu File. Il comando New è supportato solo per le applicazioni MDI, non per le applicazioni SDI senza il supporto di Document/View. La risorsa di menu generata non supporterà un elenco MRU (usato più di recente).
È necessario aggiungere funzioni e implementazioni del gestore per tutti i comandi supportati dall'applicazione, inclusi Apri e Salva dal menu File . MFC fornisce in genere codice per supportare queste funzionalità, ma tale supporto è strettamente associato all'architettura di documento/visualizzazione.
La barra degli strumenti per la tua applicazione, se da te richiesto, sarà minima.
È fortemente consigliato usare la procedura guidata per le applicazioni MFC per creare applicazioni senza l'architettura documento/visualizzazione, perché la procedura guidata garantisce un'architettura MFC corretta. Tuttavia, se è necessario evitare di usare la procedura guidata, ecco diversi approcci per ignorare l'architettura del documento/visualizzazione nel codice:
Considerare il documento come accodamento inutilizzato e implementare il codice di gestione dei dati nella classe di visualizzazione, come suggerito in precedenza. Il sovraccarico di gestione del documento è relativamente basso. Un singolo oggetto CDocument comporta una piccola quantità di overhead da sola, oltre al piccolo sovraccarico delle
CDocument
classi di base, CCmdTarget e CObject. Entrambe le ultime classi sono piccole.Dichiarato in
CDocument
:Due
CString
oggetti.Tre BOOLs.
Un
CDocTemplate
puntatore.Un
CPtrList
oggetto, che contiene un elenco delle visualizzazioni del documento.
Inoltre, il documento richiede la quantità di tempo necessaria per creare l'oggetto documento, i relativi oggetti di visualizzazione, una finestra cornice e un oggetto modello di documento.
Trattare sia il documento che la visualizzazione come appendici inutilizzate. Inserire la gestione dei dati e il codice di disegno nella finestra cornice anziché nella visualizzazione. Questo approccio è più vicino al modello di programmazione del linguaggio C.
Eseguire l'override delle parti del framework MFC che creano il documento e la vista per eliminarle del tutto. Il processo di creazione del documento inizia con una chiamata a
CWinApp::AddDocTemplate
. Eliminate la chiamata dalla funzione membro della classe dell'applicazioneInitInstance
e, invece, crea una finestra cornice inInitInstance
. Inserire il codice di gestione dei dati nella classe della finestra cornice. Il processo di creazione del documento/visualizzazione è illustrato in Creazione documento/visualizzazione. Questo implica più lavoro e richiede una comprensione più approfondita del framework, ma ti libera completamente dal sovraccarico di gestione del documento/visualizzazione.
L'articolo MFC: Uso di classi di database senza documenti e viste offre esempi più concreti di alternative di documento/visualizzazione nel contesto delle applicazioni di database.