Share via


CMultiDocTemplate-Klasse

Definiert eine Dokumentvorlage, welche die Multiple Document Interface (MDI) implementiert.

Syntax

class CMultiDocTemplate : public CDocTemplate

Member

Die Memberfunktionen für diese Klasse sind virtuell. Dokumentation finden Sie unter CDocTemplate und CCmdTarget .

Öffentliche Konstruktoren

Name Beschreibung
CMultiDocTemplate::CMultiDocTemplate Erstellt ein CMultiDocTemplate-Objekt.

Hinweise

Eine MDI-Anwendung verwendet das Standard Rahmenfenster als Arbeitsbereich, in dem der Benutzer Null- oder mehr Dokumentrahmenfenster öffnen kann, von denen jedes dokument angezeigt wird. Eine ausführlichere Beschreibung des MDI finden Sie in den Windows-Schnittstellenrichtlinien für das Softwaredesign.

Eine Dokumentvorlage definiert die Beziehungen zwischen drei Klassentypen:

  • Eine Dokumentklasse, die Sie von CDocument ableiten.

  • Eine Ansichtsklasse, die Daten aus der oben aufgeführten Dokumentklasse anzeigt. Sie können diese Klasse von CView, , , oder CFormViewCEditView. CScrollView (Sie können auch direkt verwenden CEditView .)

  • Eine Framefensterklasse, die die Ansicht enthält. Bei einer MDI-Dokumentvorlage können Sie diese Klasse ableiten CMDIChildWndoder wenn Sie das Verhalten der Dokumentrahmenfenster nicht anpassen müssen, können Sie CMDIChildWnd direkt verwenden, ohne Ihre eigene Klasse abzuleiten.

Eine MDI-Anwendung kann mehrere Dokumenttypen unterstützen, und Dokumente unterschiedlicher Typen können gleichzeitig geöffnet werden. Ihre Anwendung verfügt über eine Dokumentvorlage für jeden dokumenttyp, der unterstützt wird. Wenn Ihre MDI-Anwendung z. B. Tabellenkalkulationen und Textdokumente unterstützt, verfügt die Anwendung über zwei CMultiDocTemplate Objekte.

Die Anwendung verwendet die Dokumentvorlage(n), wenn der Benutzer ein neues Dokument erstellt. Wenn die Anwendung mehrere Dokumenttypen unterstützt, ruft das Framework die Namen der unterstützten Dokumenttypen aus den Dokumentvorlagen ab und zeigt sie in einer Liste im Dialogfeld "Neu speichern" an. Sobald der Benutzer einen Dokumenttyp ausgewählt hat, erstellt die Anwendung ein Dokumentklassenobjekt, ein Framefensterobjekt und ein Ansichtsobjekt und fügt sie aneinander an.

Sie müssen keine Memberfunktionen außer CMultiDocTemplate dem Konstruktor aufrufen. Das Framework verarbeitet CMultiDocTemplate Objekte intern.

Weitere Informationen CMultiDocTemplatefinden Sie unter "Dokumentvorlagen" und "Dokument/Ansichtserstellungsprozess".

Vererbungshierarchie

CObject

CCmdTarget

CDocTemplate

CMultiDocTemplate

Anforderungen

Header: afxwin.h

CMultiDocTemplate::CMultiDocTemplate

Erstellt ein CMultiDocTemplate-Objekt.

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

Parameter

nIDResource
Gibt die ID der ressourcen an, die mit dem Dokumenttyp verwendet werden. Dazu können Menü-, Symbol-, Zugriffstastentabellen- und Zeichenfolgenressourcen gehören.

Die Zeichenfolgenressource besteht aus bis zu sieben Teilzeichenfolgen, die durch das Zeichen "\n" getrennt sind (das Zeichen "\n" wird als Platzhalter benötigt, wenn keine Teilzeichenfolge enthalten ist. Nachfolgende '\n'-Zeichen sind jedoch nicht erforderlich); Diese Teilzeichenfolgen beschreiben den Dokumenttyp. Informationen zu den Teilzeichenfolgen finden Sie unter CDocTemplate::GetDocString. Diese Zeichenfolgenressource befindet sich in der Ressourcendatei der Anwendung. Beispiel:

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

Die Zeichenfolge beginnt mit einem '\n'-Zeichen, da die erste Teilzeichenfolge nicht für MDI-Anwendungen verwendet wird und daher nicht enthalten ist. Sie können diese Zeichenfolge mit dem Zeichenfolgen-Editor bearbeiten; die gesamte Zeichenfolge wird als einzelner Eintrag im Zeichenfolgen-Editor und nicht als sieben separate Einträge angezeigt.

Weitere Informationen zu diesen Ressourcentypen finden Sie unter Ressourcen-Editoren.

pDocClass
Verweist auf das CRuntimeClass Objekt der Dokumentklasse. Diese Klasse ist eine CDocumentabgeleitete Klasse, die Sie zum Darstellen Ihrer Dokumente definieren.

pFrameClass
Verweist auf das CRuntimeClass Objekt der Framefensterklasse. Diese Klasse kann eine CMDIChildWndabgeleitete Klasse sein, oder sie kann sich selbst sein CMDIChildWnd , wenn Sie das Standardverhalten für Ihre Dokumentrahmenfenster wünschen.

pViewClass
Verweist auf das CRuntimeClass Objekt der Ansichtsklasse. Diese Klasse ist eine CViewabgeleitete Klasse, die Sie zum Anzeigen Ihrer Dokumente definieren.

Hinweise

Weisen Sie einem Dokumenttyp dynamisch ein CMultiDocTemplate Objekt zu, das ihre Anwendung unterstützt, und übergeben Sie jedes Objekt an CWinApp::AddDocTemplate die InitInstance Memberfunktion der Anwendungsklasse.

Beispiel

// 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)));

Hier ist ein zweites Beispiel.

// 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);

Siehe auch

CDocTemplate-Klasse
Hierarchiediagramm
CDocTemplate-Klasse
CSingleDocTemplate-Klasse
CWinApp-Klasse