Udostępnij za pośrednictwem


Klasa CMultiDocTemplate

Definiuje szablon dokumentu, który implementuje interfejs wielu dokumentów (MDI).

Składnia

class CMultiDocTemplate : public CDocTemplate

Elementy członkowskie

Funkcje składowe dla tej klasy są wirtualne. Aby uzyskać dokumentację, zobacz CDocTemplate i CCmdTarget .

Konstruktory publiczne

Nazwa/nazwisko opis
CMultiDocTemplate::CMultiDocTemplate CMultiDocTemplate Tworzy obiekt.

Uwagi

Aplikacja MDI używa głównego okna ramki jako obszaru roboczego, w którym użytkownik może otworzyć zero lub więcej okien ramek dokumentu, z których każdy wyświetla dokument. Aby uzyskać bardziej szczegółowy opis rozwiązania MDI, zobacz Wskazówki dotyczące interfejsu systemu Windows dotyczące projektowania oprogramowania.

Szablon dokumentu definiuje relacje między trzema typami klas:

  • Klasa dokumentu, która pochodzi z CDocument.

  • Klasa widoku, która wyświetla dane z klasy dokumentów wymienionej powyżej. Tę klasę można uzyskać na podstawie klasy CView, CScrollView, CFormViewlub CEditView. (Możesz również użyć CEditView bezpośrednio).

  • Klasa okna ramowego, która zawiera widok. W przypadku szablonu dokumentu MDI można utworzyć tę klasę z CMDIChildWndklasy , lub, jeśli nie musisz dostosowywać zachowania okien ramek dokumentu, możesz użyć cmDIChildWnd bezpośrednio bez wyprowadzania własnej klasy.

Aplikacja MDI może obsługiwać więcej niż jeden typ dokumentu, a dokumenty różnych typów można otwierać w tym samym czasie. Aplikacja ma jeden szablon dokumentu dla każdego obsługiwanego typu dokumentu. Jeśli na przykład aplikacja MDI obsługuje zarówno arkusze kalkulacyjne, jak i dokumenty tekstowe, aplikacja ma dwa CMultiDocTemplate obiekty.

Aplikacja używa szablonów dokumentów, gdy użytkownik tworzy nowy dokument. Jeśli aplikacja obsługuje więcej niż jeden typ dokumentu, platforma pobiera nazwy obsługiwanych typów dokumentów z szablonów dokumentów i wyświetla je na liście w oknie dialogowym Nowy plik. Gdy użytkownik wybierze typ dokumentu, aplikacja tworzy obiekt klasy dokumentu, obiekt okna ramowego i obiekt widoku i dołącza je do siebie.

Nie trzeba wywoływać żadnych funkcji składowych z CMultiDocTemplate wyjątkiem konstruktora. Struktura obsługuje CMultiDocTemplate obiekty wewnętrznie.

Aby uzyskać więcej informacji na temat CMultiDocTemplateprogramu , zobacz Szablony dokumentów i Proces tworzenia dokumentu/widoku.

Hierarchia dziedziczenia

Obiekt CObject

CCmdTarget

CDocTemplate

CMultiDocTemplate

Wymagania

Nagłówek: afxwin.h

CMultiDocTemplate::CMultiDocTemplate

CMultiDocTemplate Tworzy obiekt.

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

Parametry

nIDResource
Określa identyfikator zasobów używanych z typem dokumentu. Może to obejmować menu, ikonę, tabelę akceleratora i zasoby ciągów.

Zasób ciągu składa się z maksymalnie siedmiu podciągów oddzielonych znakiem "\n" (znak "\n" jest wymagany jako posiadacz zastępczy, jeśli podciąg nie jest dołączony; jednak końcowe znaki "\n" nie są konieczne); te podciągy opisują typ dokumentu. Aby uzyskać informacje na temat podciągów, zobacz CDocTemplate::GetDocString. Ten zasób ciągu znajduje się w pliku zasobów aplikacji. Na przykład:

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

Ciąg zaczyna się od znaku "\n", ponieważ pierwszy podciąg nie jest używany dla aplikacji MDI i nie jest uwzględniany. Ten ciąg można edytować przy użyciu edytora ciągów. cały ciąg jest wyświetlany jako pojedynczy wpis w Edytorze ciągów, a nie jako siedem oddzielnych wpisów.

Aby uzyskać więcej informacji na temat tych typów zasobów, zobacz Edytory zasobów.

pDocClass
CRuntimeClass Wskazuje obiekt klasy dokumentu. Ta klasa jest klasą pochodną zdefiniowaną CDocumentdo reprezentowania dokumentów.

pFrameClass
CRuntimeClass Wskazuje obiekt klasy okna ramowego. Ta klasa może być klasą pochodną CMDIChildWndlub może być CMDIChildWnd sama, jeśli chcesz zachowanie domyślne dla okien ramek dokumentu.

pViewClass
CRuntimeClass Wskazuje obiekt klasy widoków. Ta klasa jest klasą pochodną zdefiniowaną CViewdo wyświetlania dokumentów.

Uwagi

Dynamiczne przydzielanie jednego CMultiDocTemplate obiektu dla każdego typu dokumentu obsługiwanego przez aplikację i przekazywania każdego z nich do CWinApp::AddDocTemplate funkcji InitInstance składowej klasy aplikacji.

Przykład

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

Oto drugi przykład.

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

Zobacz też

Klasa CDocTemplate
Wykres hierarchii
Klasa CDocTemplate
Klasa CSingleDocTemplate
Klasa CWinApp