Classe CMultiDocTemplate

Definisce un modello di documento che implementa l'interfaccia a documenti multipli (MDI).

Sintassi

class CMultiDocTemplate : public CDocTemplate

Membri

Le funzioni membro per questa classe sono virtuali. Per la documentazione, vedere CDocTemplate e CCmdTarget .

Costruttori pubblici

Nome Descrizione
CMultiDocTemplate::CMultiDocTemplate Costruisce un oggetto CMultiDocTemplate.

Osservazioni:

Un'applicazione MDI usa la finestra cornice principale come area di lavoro in cui l'utente può aprire zero o più finestre cornice documento, ognuna delle quali visualizza un documento. Per una descrizione più dettagliata dell'MDI, vedere Linee guida per l'interfaccia di Windows per la progettazione software.

Un modello di documento definisce le relazioni tra tre tipi di classi:

  • Classe di documento, derivata da CDocument.

  • Classe di visualizzazione, che visualizza i dati della classe documento elencata in precedenza. È possibile derivare questa classe da CView, CScrollView, CFormViewo CEditView. È anche possibile usare CEditView direttamente.

  • Classe della finestra cornice che contiene la visualizzazione. Per un modello di documento MDI, è possibile derivare questa classe da CMDIChildWndoppure, se non è necessario personalizzare il comportamento delle finestre cornice documento, è possibile usare CMDIChildWnd direttamente senza derivare la propria classe.

Un'applicazione MDI può supportare più di un tipo di documento e i documenti di tipi diversi possono essere aperti contemporaneamente. L'applicazione ha un modello di documento per ogni tipo di documento supportato. Ad esempio, se l'applicazione MDI supporta sia fogli di calcolo che documenti di testo, l'applicazione ha due CMultiDocTemplate oggetti.

L'applicazione usa i modelli di documento quando l'utente crea un nuovo documento. Se l'applicazione supporta più tipi di documento, il framework ottiene i nomi dei tipi di documento supportati dai modelli di documento e li visualizza in un elenco nella finestra di dialogo File nuovo. Dopo che l'utente ha selezionato un tipo di documento, l'applicazione crea un oggetto classe documento, un oggetto finestra cornice e un oggetto visualizzazione e li collega l'uno all'altro.

Non è necessario chiamare funzioni membro di CMultiDocTemplate ad eccezione del costruttore. Il framework gestisce CMultiDocTemplate gli oggetti internamente.

Per altre informazioni su CMultiDocTemplate, vedere Modelli di documento e processo di creazione di documenti/visualizzazioni.

Gerarchia di ereditarietà

CObject

CCmdTarget

Cdoctemplate

CMultiDocTemplate

Requisiti

Intestazione: afxwin.h

CMultiDocTemplate::CMultiDocTemplate

Costruisce un oggetto CMultiDocTemplate.

CMultiDocTemplate(
    UINT nIDResource,
    CRuntimeClass* pDocClass,
    CRuntimeClass* pFrameClass,
    CRuntimeClass* pViewClass);

Parametri

nIDResource
Specifica l'ID delle risorse utilizzate con il tipo di documento. Ciò può includere risorse di menu, icona, tabella dell'acceleratore e stringa.

La risorsa stringa è costituita da un massimo di sette sottostringhe separate dal carattere '\n' (il carattere '\n' è necessario come segnaposto se non è inclusa una sottostringa; tuttavia, i caratteri finali '\n' non sono necessari); queste sottostringhe descrivono il tipo di documento. Per informazioni sulle sottostringhe, vedere CDocTemplate::GetDocString. Questa risorsa stringa si trova nel file di risorse dell'applicazione. Ad esempio:

// MYCALC.RC
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
  IDR_SHEETTYPE "\nSheet\nWorksheet\nWorksheets (*.myc)\n.myc\n MyCalcSheet\nMyCalc Worksheet"
END

La stringa inizia con un carattere '\n' perché la prima sottostringa non viene usata per le applicazioni MDI e quindi non è inclusa. È possibile modificare questa stringa usando l'editor di stringhe; L'intera stringa viene visualizzata come una singola voce nell'editor di stringhe, non come sette voci separate.

Per altre informazioni su questi tipi di risorse, vedere Editor di risorse.

pDocClass
Punta all'oggetto CRuntimeClass della classe document. Questa classe è una CDocumentclasse derivata da che si definisce per rappresentare i documenti.

pFrameClass
Punta all'oggetto CRuntimeClass della classe finestra cornice. Questa classe può essere una CMDIChildWndclasse derivata da , oppure può essere CMDIChildWnd se si desidera un comportamento predefinito per le finestre cornice documento.

pViewClass
Punta all'oggetto CRuntimeClass della classe di visualizzazione. Questa classe è una CViewclasse derivata da che si definisce per visualizzare i documenti.

Osservazioni:

Allocare dinamicamente un CMultiDocTemplate oggetto per ogni tipo di documento supportato dall'applicazione e passarne CWinApp::AddDocTemplate ognuno dalla InitInstance funzione membro della classe dell'applicazione.

Esempio

// Code fragment from CMyApp::InitInstance

// Establish all of the document types
// supported by the application

AddDocTemplate(new CMultiDocTemplate(IDR_BRUSHDOCTYPE,
   RUNTIME_CLASS(CBrushDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CBrushView)));

AddDocTemplate(new CMultiDocTemplate(IDR_DCDOCTYPE,
   RUNTIME_CLASS(CDCDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CDCView)));

Ecco un secondo esempio.

// Code fragment taken from CMyApp::InitInstance

// Normally, an application creates a document 
// template and registers it with MFC as a part
// of its initialization.

// IDR_EXAMPLEDOCTYPE is a resource ID string; see
// the CDocTemplate class overview documentation
// for more information on its format.

// The next three parameters use the RUNTIME_CLASS()
// macro to get runtime type information for the doc,
// frame, and view classes that will be associated
// by the template.

pDocTemplate = new CMultiDocTemplate(IDR_EXAMPLEDOCTYPE,
   RUNTIME_CLASS(CExampleDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CExampleView));
if (!pDocTemplate)
return FALSE;

// After the following call, MFC is aware of the doc
// template and will free it when the application is
// shut down. The doc templates known to MFC will
// automatically be used when CWinApp:OnFileOpen()
// or CWinApp::OnFileNew() are called.

AddDocTemplate(pDocTemplate);

Vedi anche

Classe CDocTemplate
Grafico della gerarchia
Classe CDocTemplate
Classe CSingleDocTemplate
Classe CWinApp