Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Definierar en dokumentmall som implementerar MDI (Multiple Document Interface).
Syntax
class CMultiDocTemplate : public CDocTemplate
Medlemmar
Medlemsfunktionerna för den här klassen är virtuella. Mer information finns i CDocTemplate och CCmdTarget .
Offentliga konstruktorer
| Namn | Beskrivning |
|---|---|
| CMultiDocMall::CMultiDocTemplate | Konstruerar ett CMultiDocTemplate objekt. |
Anmärkningar
Ett MDI-program använder huvudramsfönstret som en arbetsyta där användaren kan öppna noll eller fler fönster för dokumentramar, som var och en visar ett dokument. En mer detaljerad beskrivning av MDI finns i Riktlinjer för Windows-gränssnitt för programvarudesign.
En dokumentmall definierar relationerna mellan tre typer av klasser:
En dokumentklass som du härleder från CDocument.
En vyklass som visar data från dokumentklassen som anges ovan. Du kan härleda den här klassen från CView,
CScrollView,CFormViewellerCEditView. (Du kan också användaCEditViewdirekt.)En bildrutefönsterklass som innehåller vyn. För en MDI-dokumentmall kan du härleda den här klassen från
CMDIChildWnd, eller, om du inte behöver anpassa beteendet för dokumentramsfönstren, kan du använda CMDIChildWnd direkt utan att härleda din egen klass.
Ett MDI-program kan ha stöd för mer än en typ av dokument, och dokument av olika typer kan vara öppna samtidigt. Programmet har en dokumentmall för varje dokumenttyp som det stöder. Om ditt MDI-program till exempel stöder både kalkylblad och textdokument har programmet två CMultiDocTemplate objekt.
Programmet använder dokumentmallarna när användaren skapar ett nytt dokument. Om programmet stöder mer än en typ av dokument hämtar ramverket namnen på de dokumenttyper som stöds från dokumentmallarna och visar dem i en lista i dialogrutan Nytt fil. När användaren har valt en dokumenttyp skapar programmet ett dokumentklassobjekt, ett ramfönsterobjekt och ett visningsobjekt och kopplar dem till varandra.
Du behöver inte anropa några medlemsfunktioner CMultiDocTemplate förutom konstruktorn. Ramverket hanterar CMultiDocTemplate objekt internt.
Mer information om CMultiDocTemplatefinns i Dokumentmallar och processen för att skapa dokument/visa.
Arvshierarki
CMultiDocTemplate
Kravspecifikation
rubrik: afxwin.h
CMultiDocMall::CMultiDocTemplate
Konstruerar ett CMultiDocTemplate objekt.
CMultiDocTemplate(
UINT nIDResource,
CRuntimeClass* pDocClass,
CRuntimeClass* pFrameClass,
CRuntimeClass* pViewClass);
Parameterar
nIDResource
Anger ID för de resurser som används med dokumenttypen. Detta kan omfatta meny-, ikon-, acceleratortabell- och strängresurser.
Strängresursen består av upp till sju delsträngar avgränsade med tecknet "\n" (tecknet "\n" behövs som platshållare om en delsträng inte ingår. Det är dock inte nödvändigt att följa\ntecken); dessa delsträngar beskriver dokumenttypen. Information om understrängarna finns i CDocTemplate::GetDocString. Den här strängresursen finns i programmets resursfil. Till exempel:
// MYCALC.RC
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
IDR_SHEETTYPE "\nSheet\nWorksheet\nWorksheets (*.myc)\n.myc\n MyCalcSheet\nMyCalc Worksheet"
END
Strängen börjar med tecknet "\n" eftersom den första delsträngen inte används för MDI-program och därför inte ingår. Du kan redigera den här strängen med hjälp av strängredigeraren. hela strängen visas som en enda post i strängredigeraren, inte som sju separata poster.
Mer information om dessa resurstyper finns i Resursredigerare.
pDoc-klass
Pekar på objektet för CRuntimeClass dokumentklassen. Den här klassen är en CDocument-härledd klass som du definierar för att representera dina dokument.
pFrameKlass
Pekar på objektet för CRuntimeClass klassen frame-window. Den här klassen kan vara en CMDIChildWnd-härledd klass, eller så kan den vara CMDIChildWnd sig själv om du vill ha standardbeteende för dokumentramsfönstren.
pViewClass
Pekar på objektet för CRuntimeClass visningsklassen. Den här klassen är en CView-derived-klass som du definierar för att visa dina dokument.
Anmärkningar
Dynamiskt allokera ett CMultiDocTemplate objekt för varje dokumenttyp som programmet stöder och skicka vart och ett till CWinApp::AddDocTemplate från medlemsfunktionen i InitInstance din programklass.
Exempel
// 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)));
Här är ett andra exempel.
// 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);
Se även
CDocTemplate-klass
hierarkidiagram
CDocTemplate-klass
CSingleDocTemplate-klass
CWinApp-klass