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 Hauptrahmenfenster 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
CFormView
CEditView
.CScrollView
(Sie können auch direkt verwendenCEditView
.)Eine Framefensterklasse, die die Ansicht enthält. Bei einer MDI-Dokumentvorlage können Sie diese Klasse ableiten
CMDIChildWnd
oder 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 CMultiDocTemplate
finden Sie unter "Dokumentvorlagen" und "Dokument/Ansichtserstellungsprozess".
Vererbungshierarchie
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. Zum 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 CDocument
abgeleitete Klasse, die Sie zum Darstellen Ihrer Dokumente definieren.
pFrameClass
Verweist auf das CRuntimeClass
Objekt der Framefensterklasse. Diese Klasse kann eine CMDIChildWnd
abgeleitete 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 CView
abgeleitete 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