CSingleDocTemplate 类
定义实现单文档界面 (SDI) 的文档模板。
语法
class CSingleDocTemplate : public CDocTemplate
成员
公共构造函数
名称 | 描述 |
---|---|
CSingleDocTemplate::CSingleDocTemplate | 构造 CSingleDocTemplate 对象。 |
备注
SDI 应用程序使用主框架窗口显示文档;一次只能打开一个文档。
文档模板定义了三种类之间的关系:
派生自
CDocument
的文档类。视图类,显示上面列出的文档类中的数据。 可以从
CView
、CScrollView
、CFormView
或CEditView
派生此类。 (你也可以直接使用CEditView
。)包含视图的框架窗口类。 对于 SDI 文档模板,可以从
CFrameWnd
中派生此类;如果不需要自定义主框架窗口的行为,则可以直接使用CFrameWnd
,而无需派生自己的类。
SDI 应用程序通常支持一种类型的文档,因此它只有一个 CSingleDocTemplate
对象。 一次只能打开一个文档。
无需调用除构造函数以外的任何 CSingleDocTemplate
成员函数。 框架在内部处理 CSingleDocTemplate
对象。
有关使用 CSingleDocTemplate
的详细信息,请参阅文档模板和文档/视图创建过程。
继承层次结构
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 类