Класс CSingleDocTemplate

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

Синтаксис

class CSingleDocTemplate : public CDocTemplate

Участники

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

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

Замечания

Приложение SDI использует основное окно фрейма для отображения документа; одновременно может быть открыт только один документ.

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

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

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

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

Приложение SDI обычно поддерживает один тип документа, поэтому он имеет только один CSingleDocTemplate объект. Одновременно можно открыть только один документ.

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

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

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

CObject

CCmdTarget

Cdoctemplate

CSingleDocTemplate

Требования

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

CSingleDocTemplate::CSingleDocTemplate

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

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

Параметры

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

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

// MYCALC.RC
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
  IDR_MAINFRAME "MyCalc Windows Application\nSheet\nWorksheet\n Worksheets (*.myc)\n.myc\nMyCalcSheet\n MyCalc Worksheet"
END

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

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

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

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

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

Замечания

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

Пример

// The following code fragment is from CMyWinApp::InitInstance.
// CMyWinApp is derived from CWinApp.

// Establish the document type
// supported by the application
AddDocTemplate(new CSingleDocTemplate(IDR_MAINFRAME,
   RUNTIME_CLASS(CMyDoc),
   RUNTIME_CLASS(CMainFrame),       // main SDI frame window
   RUNTIME_CLASS(CMyView)));

 

// The following code fragment is from CMyWinApp::InitInstance.
// CMyWinApp is derived from CWinApp.

// Normally, an application creates a document
// template and registers it with MFC as a part
// of its initialization.

// IDR_SAMPLERESOURCE 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.

CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,
   RUNTIME_CLASS(CMyDoc),
   RUNTIME_CLASS(CMainFrame),       // main SDI frame window
   RUNTIME_CLASS(CMyView));
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);

См. также

Пример DOCKTOOL MFC
Класс CDocTemplate
Диаграмма иерархии
Класс CDocTemplate
Класс CDocument
Класс CFrameWnd
Класс CMultiDocTemplate
Класс CView
Класс CWinApp