Alternative all'architettura documento/visualizzazione

Le applicazioni MFC in genere utilizzano l'architettura documento/visualizzazione per gestire le informazioni, i formati dei file e la rappresentazione visiva dei dati per gli utenti. Per la maggior parte delle applicazioni desktop, l'architettura documento/visualizzazione è un'architettura di applicazione appropriata ed efficiente. Questa architettura separa i dati dalla visualizzazione e, in molti casi, semplifica l'applicazione e riduce il codice ridondante.

Tuttavia, l'architettura documento/visualizzazione non è adatta in alcune situazioni. Considerare i seguenti esempi:

  • Se si sta effettuando il porting di un'applicazione per Windows scritta in C, è possibile che si desideri completare il porting prima di aggiungere il supporto documento/visualizzazione all'applicazione.

  • Se si sta scrivendo un'utilità semplice, potrebbe essere possibile evitare di utilizzare l'architettura documento/visualizzazione.

  • Se il codice originale combina già la gestione dei dati con visualizzazione dei dati, non vale la pena passare il codice al modello documento/visualizzazione perché è necessario separare le due funzionalità. Potrebbe essere meglio lasciare il codice così com'è.

Per creare un'applicazione che non usa l'architettura di documento/visualizzazione, deselezionare la casella di controllo Supporto architettura documento/visualizzazione nel passaggio 1 della Creazione guidata applicazione MFC. Per informazioni dettagliate, vedere Creazione guidata applicazione MFC.

Nota

Le applicazioni basate su dialoghi generate dalla Creazione guidata applicazione MFC non usano l'architettura di documento/visualizzazione, pertanto la casella di controllo Supporto architettura documento/visualizzazione è disabilitata se si seleziona il tipo di applicazione della finestra di dialogo.

Le procedure guidate di Visual C++, nonché gli editor di origine e di finestre di dialogo, utilizzano l'applicazione generata come per qualsiasi altra applicazione generata mediante la creazione 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 impone ancora di utilizzare una finestra di visualizzazione, in quanto semplifica il posizionamento e la gestione del contenuto dell'applicazione. È possibile aggiungere codice per il disegno al membro OnPaint di questa classe. Il codice dovrebbe aggiungere delle barre di scorrimento alla visualizzazione anziché alla cornice.

Poiché l'architettura documento/visualizzazione fornita da MFC è responsabile dell'implementazione di molte delle funzionalità di base di un'applicazione, la sua assenza nel progetto significa che il programmatore è 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 dal menu File . (L'oggetto Il nuovo comando è supportato solo per le applicazioni MDI, non per le applicazioni SDI senza 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 in genere fornisce il codice per supportare queste funzionalità, ma tale supporto è associato strettamente all'architettura documento/visualizzazione.

  • La barra degli strumenti per l'applicazione, se richiesta, sarà minima.

Si consiglia di utilizzare la Creazione guidata applicazione MFC per creare applicazioni senza l'architettura documento/visualizzazione, poiché la procedura guidata garantisce la creazione di un'architettura MFC corretta. Tuttavia, se è necessario evitare l'utilizzo della procedura guidata, di seguito sono descritti diversi approcci per evitare di inserire l'architettura documento/visualizzazione nel codice:

  • Considerare il documento come un'appendice non utilizzata e implementare il codice di gestione dei dati nella classe di visualizzazione, come suggerito in precedenza. L'overhead del documento è relativamente basso. Un singolo oggetto CDocument comporta una piccola quantità di overhead da sola, oltre al piccolo sovraccarico delle CDocumentclassi di base, CCmdTarget e CObject. Entrambe le classi precedenti sono piccole.

    Dichiarato in CDocument:

    • Due oggetti CString.

    • Tre BOOLs.

    • Un puntatore CDocTemplate.

    • Un oggetto CPtrList contenente un elenco delle visualizzazioni del documento.

    Inoltre, il documento richiede il tempo necessario per creare l'oggetto documento, i relativi oggetti visualizzazione, una finestra cornice e un oggetto modello di documento.

  • Trattare sia il documento che la visualizzazione come appendici inutilizzate. Inserire il codice di disegno e di gestione dei dati nella finestra cornice invece che 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 visualizzazione per evitarne la creazione. Il processo di creazione del documento ha inizio con una chiamata a CWinApp::AddDocTemplate. Eliminare tale chiamata dalla funzione membro InitInstance della classe dell'applicazione e, invece, creare manualmente una finestra cornice in InitInstance. 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 approccio comporta più lavoro e richiede una conoscenza più approfondita del framework, ma elimina completamente il sovraccarico della struttura 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.

Vedi anche

Architettura documento/visualizzazione