CSingleDocTemplate 类

定义实现单文档界面 (SDI) 的文档模板。

语法

class CSingleDocTemplate : public CDocTemplate

成员

公共构造函数

名称 描述
CSingleDocTemplate::CSingleDocTemplate 构造 CSingleDocTemplate 对象。

备注

SDI 应用程序使用主框架窗口显示文档;一次只能打开一个文档。

文档模板定义了三种类之间的关系:

  • 派生自 CDocument 的文档类。

  • 视图类,显示上面列出的文档类中的数据。 可以从 CViewCScrollViewCFormViewCEditView 派生此类。 (你也可以直接使用 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
指定与文档类型一起使用的资源的 ID。 这可能包括菜单、图标、快捷键表和字符串资源。

字符串资源最多包含由 \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 对象并将其从应用程序类的 InitInstance 成员函数传递给 CWinApp::AddDocTemplate

示例

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

另请参阅

MFC 示例 DOCKTOOL
CDocTemplate 类
层次结构图
CDocTemplate 类
CDocument 类
CFrameWnd 类
CMultiDocTemplate 类
CView 类
CWinApp 类