Класс CMultiDocTemplate

Определяет шаблон документа, реализующий многодокументный интерфейс (MDI).

Синтаксис

class CMultiDocTemplate : public CDocTemplate

Участники

Функции-члены для этого класса являются виртуальными. Дополнительные сведения см. в разделе CDocTemplate и CCmdTarget .

Открытые конструкторы

Имя Описание
CMultiDocTemplate::CMultiDocTemplate Формирует объект CMultiDocTemplate.

Замечания

Приложение MDI использует основное окно фрейма в качестве рабочей области, в которой пользователь может открывать ноль или больше окон фреймов документов, каждый из которых отображает документ. Более подробное описание MDI см. в руководстве по интерфейсу Windows для проектирования программного обеспечения.

Шаблон документа определяет связи между тремя типами классов:

  • Класс документа, производный от CDocument.

  • Класс представления, который отображает данные из класса документа, указанного выше. Этот класс можно наследить из CView, CFormViewCScrollViewили CEditView. (Вы также можете использовать CEditView напрямую.)

  • Класс окна кадра, содержащий представление. Для шаблона документа MDI можно получить этот класс из CMDIChildWndэтого класса или, если вам не нужно настраивать поведение окон фреймов документов, можно использовать CMDIChildWnd Напрямую, не вызывая собственный класс.

Приложение MDI может поддерживать несколько типов документов, а документы разных типов могут открываться одновременно. Приложение имеет один шаблон документа для каждого типа документа, который он поддерживает. Например, если приложение MDI поддерживает как электронные таблицы, так и текстовые документы, приложение имеет два CMultiDocTemplate объекта.

Приложение использует шаблоны документов, когда пользователь создает новый документ. Если приложение поддерживает несколько типов документов, платформа получает имена поддерживаемых типов документов из шаблонов документов и отображает их в списке в диалоговом окне "Создать файл". После выбора типа документа приложение создает объект класса документов, объект окна кадра и объект представления и присоединяет их друг к другу.

Вам не нужно вызывать какие-либо функции-члены CMultiDocTemplate , кроме конструктора. Платформа обрабатывает CMultiDocTemplate объекты внутри системы.

Дополнительные сведения см CMultiDocTemplate. в разделе "Шаблоны документов" и "Процесс создания документа/представления".

Иерархия наследования

CObject

CCmdTarget

Cdoctemplate

CMultiDocTemplate

Требования

Заголовок: afxwin.h

CMultiDocTemplate::CMultiDocTemplate

Формирует объект CMultiDocTemplate.

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

Параметры

nIDResource
Указывает идентификатор ресурсов, используемых с типом документа. Это может включать меню, значок, таблицу акселератора и строковые ресурсы.

Строковый ресурс состоит из семи подстроок, разделенных символом "\n" (символ "\n" требуется в качестве держателя места, если подстрока не включена; однако конечные символы "\n" не требуются); Эти подстроки описывают тип документа. Сведения о подстроках см. в разделе CDocTemplate::GetDocString. Этот строковый ресурс находится в файле ресурсов приложения. Например:

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

Строка начинается с символа "\n", так как первая подстрока не используется для приложений MDI и поэтому не включается. Эту строку можно изменить с помощью редактора строк; Вся строка отображается как одна запись в редакторе строк, а не как семь отдельных записей.

Дополнительные сведения об этих типах ресурсов см. в редакторах ресурсов.

pDocClass
Указывает на CRuntimeClass объект класса документа. Этот класс является производным классом CDocument, который определяется для представления документов.

pFrameClass
Указывает на CRuntimeClass объект класса frame-window. Этот класс может быть производным CMDIChildWndот класса или может быть сам по себе, если требуется CMDIChildWnd поведение по умолчанию для окон фреймов документов.

pViewClass
Указывает на CRuntimeClass объект класса представления. Этот класс является производным классом CView, который определяется для отображения документов.

Замечания

Динамически выделяет один CMultiDocTemplate объект для каждого типа документа, который поддерживает приложение, и передает каждый из CWinApp::AddDocTemplateInitInstance функции-члена класса приложения.

Пример

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

Ниже приведен второй пример.

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

См. также

Класс CDocTemplate
Диаграмма иерархии
Класс CDocTemplate
Класс CSingleDocTemplate
Класс CWinApp