Sdílet prostřednictvím


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, nebo CEditView. (Můžete také použít CEditView přímo.)

  • Třída okna s rámečkem, která obsahuje zobrazení. U šablony dokumentu MDI můžete tuto třídu odvodit z CMDIChildWndnebo, 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 CMultiDocTemplatev tématu Šablony dokumentů a proces vytváření dokumentů/zobrazení.

Hierarchie dědičnosti

Objekt CObject

CCmdTarget

CDocTemplate

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á CDocumenttří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á CMDIChildWndtří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á CViewtří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