CMultiDocTemplate – třída
Definuje šablonu dokumentu, která implementuje rozhraní MDI (Multiple Document Interface).
Syntaxe
class CMultiDocTemplate : public CDocTemplate
Členové
Členské funkce pro tuto třídu jsou virtuální. Dokumentaci najdete v tématu CDocTemplate a CCmdTarget .
Veřejné konstruktory
Název | Popis |
---|---|
CMultiDocTemplate::CMultiDocTemplate | CMultiDocTemplate Vytvoří objekt. |
Poznámky
Aplikace MDI používá okno hlavního rámce jako pracovní prostor, ve kterém může uživatel otevřít nula nebo více oken rámečku dokumentu, z nichž každý zobrazuje dokument. Podrobnější popis rozhraní MDI naleznete v tématu Windows Interface Guidelines for Software Design.
Šablona dokumentu definuje vztahy mezi třemi typy tříd:
Třída dokumentu, která je odvozena z CDocument.
Třída zobrazení, která zobrazuje data z třídy dokumentu uvedené výše. Tuto třídu lze odvodit z CView,
CScrollView
,CFormView
, neboCEditView
. (Můžete také použítCEditView
přímo.)Třída okna s rámečkem, která obsahuje zobrazení. U šablony dokumentu MDI můžete tuto třídu odvodit z
CMDIChildWnd
nebo, pokud nepotřebujete přizpůsobit chování oken rámečku dokumentu, můžete použít CMDIChildWnd přímo bez odvození vlastní třídy.
Aplikace MDI může podporovat více typů dokumentů a dokumenty různých typů můžou být otevřeny současně. Aplikace má jednu šablonu dokumentu pro každý typ dokumentu, který podporuje. Pokud například vaše aplikace MDI podporuje tabulky i textové dokumenty, aplikace má dva CMultiDocTemplate
objekty.
Aplikace použije šablony dokumentů, když uživatel vytvoří nový dokument. Pokud aplikace podporuje více typů dokumentů, rozhraní získá názvy podporovaných typů dokumentů ze šablon dokumentů a zobrazí je v seznamu v dialogovém okně Nový soubor. Jakmile uživatel vybere typ dokumentu, aplikace vytvoří objekt třídy dokumentu, objekt okna rámečku a objekt zobrazení a připojí je k sobě.
Nemusíte volat žádné členské funkce CMultiDocTemplate
kromě konstruktoru. Architektura zpracovává CMultiDocTemplate
objekty interně.
Další informace najdete CMultiDocTemplate
v tématu Šablony dokumentů a proces vytváření dokumentů/zobrazení.
Hierarchie dědičnosti
CMultiDocTemplate
Požadavky
Hlavička: afxwin.h
CMultiDocTemplate::CMultiDocTemplate
CMultiDocTemplate
Vytvoří objekt.
CMultiDocTemplate(
UINT nIDResource,
CRuntimeClass* pDocClass,
CRuntimeClass* pFrameClass,
CRuntimeClass* pViewClass);
Parametry
nIDResource
Určuje ID prostředků použitých s typem dokumentu. Může se jednat o nabídku, ikonu, tabulku akcelerátoru a prostředky řetězců.
Prostředek řetězce se skládá z až sedmi podřetězců oddělených znakem \n (znak \n je nutný jako držitel místa, pokud není součástí podřetězce, ale koncové znaky \n nejsou nutné); tyto podřetětědce popisují typ dokumentu. Informace o podřetěžcích naleznete v tématu CDocTemplate::GetDocString. Tento prostředek řetězce se nachází v souboru prostředků aplikace. Příklad:
// MYCALC.RC
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
IDR_SHEETTYPE "\nSheet\nWorksheet\nWorksheets (*.myc)\n.myc\n MyCalcSheet\nMyCalc Worksheet"
END
Řetězec začíná znakem \n, protože první podřetězc se nepoužívá pro aplikace MDI, takže není zahrnutý. Tento řetězec můžete upravit pomocí editoru řetězců; Celý řetězec se zobrazí jako jedna položka v Editoru řetězců, nikoli jako sedm samostatných položek.
Další informace o těchto typech prostředků najdete v tématu Editory prostředků.
pDocClass
Odkazuje na CRuntimeClass
objekt třídy dokumentu. Tato třída je -odvozená CDocument
třída, kterou definujete pro reprezentaci dokumentů.
pFrameClass
Odkazuje na CRuntimeClass
objekt třídy rámečku okna. Tato třída může být odvozená CMDIChildWnd
třída nebo může být CMDIChildWnd
sama o sobě, pokud chcete výchozí chování oken rámečku dokumentu.
pViewClass
Odkazuje na CRuntimeClass
objekt třídy zobrazení. Tato třída je -odvozená CView
třída, kterou definujete k zobrazení dokumentů.
Poznámky
Dynamicky přidělte jeden CMultiDocTemplate
objekt pro každý typ dokumentu, který vaše aplikace podporuje, a předávat InitInstance
CWinApp::AddDocTemplate
každý z členů vaší třídy aplikace.
Příklad
// 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)));
Tady je druhý příklad.
// 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);
Viz také
CDocTemplate – třída
Graf hierarchie
CDocTemplate – třída
CSingleDocTemplate – třída
CWinApp – třída