C S ingleDocTemplate

CSingleDocTemplate 类 定 义 了 一 个 文 档 模 板 用 于 实 现 单 文 档 界 面 ( SD I) 。 一个 SDI 应 用 程 序 使 用 主 框 架 窗 口 来 显 示 一 个 文 档 ; 一 次 只 能 打 开 一 个 文 档 。

  • 个 文 档 模 板 定 义 了 类 的 三 个 类 型 之 间 的 关 系 :

    • 一 个 从 CDocument 派 生 而 来 的 文 档 类 。

    • 一 个 视 类 , 用 来 显 示 来 自 上 面 提 到 的 文 档 类 的 数

      据 。 你 可 以 从 CView , CScrollView , CFormView , 或 CEditView 派 生 这 个 类 。 ( 你 也 可 以 直 接 使用 CEditView 。 )

    • 一 个 框 架 窗 口 类 , 用 来 包 容 视 。 对 于 一 个 SDI 文 档

      模 板 , 你 可 以 从CFrameWnd 派 生 这 个 类 ; 如 果 你 不 需 要 定 制 主 框 架 窗 口 的 行 为 , 你 可 以 直接 使 用 CFrameWnd , 而 不 派 生 你 自 己 的 类 。

  • 个 SDI 应 用 程 序 通 常 支 持 一 种 类 型 的 文 档 , 因 此 它 只

    有 一 个

CSingleDocTemplate 模 板 。 一 次 只 打 开 一 个 文 档 。

除 了 CSingleDocTemplate 的 构 造 函 数 , 你 不 需 要 调 用 它 的 任 何 其 它 成 员 函 数 。框 架 在 内 部 处 理 CSingleDocTemplate 对 象 。

请 参 阅 CDocTemplate, CDocument, CFrameWnd, CMultiDocTemplate, CView, C W inApp

C SingleDocTemplate 类 成 员

Construction

CsingleDocTemplate 构 造 一 个 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

你 可 以 使 用 字 符 串 编 辑 器 来 编 辑 这 个 字 符 串 ; 在 字 符 串 编 辑 器 中 整 个 字符 串 是 作 为 一 个 单 一 的 项 显 示 的 , 而 不 是 作 为 七 个 分 离 的 项 。

有 关 这 些 资 源 类 型 的 更 多 信 息 , 参 见 子 串 编 辑 器 ( 在 “ Visual C++ 用 户

指 南 ” 中 被 描 述 ) 。

pDocClass

指 向 一 个 文 档 类 的 CRuntimeClass 对 象 。 这 个 类 是 一 个 CDocument 派生类 , 是 你 定 义 来 代 表 你 的 文 档 的 。

pFrameClass

指 向 框 架 窗 口 类 的 CRu n timeClass 对 象 。 这 个 类 可 以 是 一 个 CFrameWnd

派 生 类 , 或 者 如 果 你 想 要 你 的 主 框 架 窗 口 具 有 缺 省 的 行 为 , 它 可 以 是 一个 CFrameWnd 自 身 ,

pViewClass

指 向 一 个 视 类 的 CRuntimeClass 对 象 。 这 个 类 是 一 个 CView 派 生 类 , 是你 定 义 来 显 示 你 的 文 档 的 。

说 明

此 成 员 函 数 用 来 构 造 一 个 CSingleDocTemplate 对 象 。 动 态 分 配 一 个CSingleDocTemplate 对 象 , 并 将 它 从 你 的 应 用 程 序 类 的 InitInstance 成 员 函 数 传递 给 C W inApp::AddDoc- Template 。

示 例

// example for CSingleDocTemplate::CSingleDocTemplate BOOL CMyApp::InitInstance()

{

// ...

// 建立应用程序支持的文档类

AddDocTemplate( new CSingleDocTemplate( IDR_MAINFRAME,

RUNTIME_CLASS( CSheetDoc ), RUNTIME_CLASS( CFrameWnd ), RUNTIME_CLASS( CSheetView ) ) );

// ...

}

请 参 阅 CDocTemplate::GetDocString, CWinApp::AddDocTemplate,

C W inApp::InitInstance,

CRuntimeClass, RUNTIME_CLASS