Condividi tramite


Alternative all'architettura di documenti e visualizzazione

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 CDocumentclassi 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'applicazione InitInstance e, invece, crea 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 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.

Vedere anche

Architettura documento/visualizzazione