C O le DocOb jec t Item

COleDocObjectItem 类 实 现 了 活 动 文 档 容 器 。 在 MFC 中 , 处 理 一 个 活 动 文 档 类似 于 处 理 一 个 普 通 的 , 现 场 可 编 辑 的 嵌 入 文 档 , 除 了 下 面 列 出 的 不 同 之 处 :

  • COleDocument 派 生 类 仍 然 保 存 一 个 当 前 内 置 项 的 列 表 ;

    但 是 这 些 项 有 可能是 COleDocObjectItem 派 生 的 项 。

  • 当 一 个 活 动 文 档 是 活 动 的 时 , 当 它 被 现 场 激 活 时 , 它

    占 据 窗 口 中 的 整 个 客户 区 。

  • 一 个 活 动 文 档 容 器 对 Help 菜 单 具 有 完 全 的 控 制 。

  • Help 菜 单 包 含 适 用 于 活 动 文 档 容 器 和 服 务 器 的 菜 单 项

由 于 活 动 文 档 容 器 拥 有 Help 菜 单 , 因 此 容 器 要 负 责 将 服 务 器 的 Help 菜 单 消 息向 前 传 送 给 服 务 器 。 这 个 集 成 过 程 由 COleDocObjectItem 来 处 理 。

有 关 菜 单 合 并 和 激 活 活 动 文 档 的 更 多 消 息 , 参 见 “ V isual C++ 程 序 员 指 南 ” 一书 中 的 “ 获 得 文 档 容 器 概 述 ” 。

# include <afxole.h>

请 参 阅 COleClientItem , CDocObjectServerItem

CO leDocObjectItem 类 成 员

Constructors

ColeDocObjectItem 构 造 一 个 COleDocObject 项

Operations

GetActiveView 获 取 文 档 的 活 动 视 图OnPreparePrinting 准 备 容 器 应 用 程 序 要 打 印 的 文 档OnPrint 打 印 容 器 应 用 程 序 的 文 档

GetPageCount 获 取 容 器 应 用 程 序 中 的 文 档 的 页 数

ExecCommand 执 行 用 户 指 定 的 命 令

成 员 函 数

CO leDocObjectItem::COleDocObjectItem COleDocObjectItem(COleDocument* pContainerDoc = NULL); 参 数

pContainerDoc

是 一 个 指 向 COleDocument 对 象 的 指 针 , 这 个 对 象 是 作 为 活 动 文 档 容 器的 。 为 了 使 能 IMPLEMENT_SERIALIZE , 这 个 参 数 必 须 为 NULL 。 而 一般 来 说 , 是 必 须 用 一 个 非 NULL 文 档 指 针 来 构 造 一 个 OLE 项 。

说 明

调 用 这 个 成 员 函 数 来 初 始 化 COleDocObjectItem 项。

CO leDocObjectItem::ExecCommand

HRESULT ExecCommand(DWORD nCmdID ,

DWORD nCmdExecOpt = OLECMDEXECOPT_DONTPROMPTUSER,

const GUID* pguidCmdGroup = NULL);

返 回 值

如 果 成 功 则 返 回 S_OK ; 否 则 , 返 回 下 列 错 误 代 码 之 一 :

Value Description

E_UNEXPECTED 发 生 了 没 有 预 想 到 的 错 误

E_FAIL 发 生 了 错 误

E_NOTIMPL 表 示 MFC 自 己 尝 试 翻 译 和 分 配 命 令

OLECMDERR_E_UNKNOWN GROUP OLECMDERR_E_NOTSUPPO RTED

PguidCmdGroup 不 是 NULL , 但 没 有 指 明一 个 公 认 的 命 令 群

在 pGroup 群 中 nCmdID 没 有 被 认 为 是 一 个有 效 的 命 令

OLECMDERR_DISABLED 由 nCmdID 标 识 的 命 令 是 无 效 的 , 不 能 被

执 行

续 表

OLECMDERR_NOHELP 调 用 者 用 nCmdID 标 识 的 命 令 请 求 帮 助 ,

但 是 没 有 可 用 的 帮 助

OLECMDERR_CANCELED 使 用 者 取 消 了 执 行

参 数

nCmdID

待 执 行 命 令 的 标 识 符 。 必 须 是 在 由 pguidCmdGroup 定 义 的 组 中 。

nCmdExecOpt

指 明 任 务 执 行 选 项 。 缺 省 情 况 下 设 置 为 执 行 任 务 时 不 给 用 户 提 示 。 参 见

OLECMDEXE - COPT 可 获 得 取 值 的 列 表 。

pguidCmdGroup

命 令 组 的 特 有 标 识 符 。缺 省 情 况 下 是 NULL ,这 表 明 是 标 准 组 。由 nCmdID

传 递 的 命 令 必 须 是 属 于 这 个 组 的 。

调 用 这 个 成 员 函 数 执 行 由 用 户 指 定 的 命 令 。

参 数 pguidCmdGroupnCmdID 一 起 唯 一 确 定 了 要 激 活 的 命 令 。 参 数

nCmdExecOpt 确 定 了 需 要 执 行 的 确 切 的 动 作 。

请 参 阅 IOleCommandTarget::Exec

CO leDocObjectItem::GetActiveView LPOLEDOCUMENTVIEW GetActiveView() const; 返 回 值

指 向 当 前 活 动 视 窗 的 IOleDocumentView 接 口 的 指 针 。 如 果 当 前 没 有 活 动 视 窗 , 则 返 回 NULL 。

调 用 这 个 成 员 函 数 可 以 获 得 指 向 当 前 活 动 视 窗 的 IOleDocumentView 接 口 的 指针 。 有 关 这 个 返 回 的 IO leDocumentView 指 针 的 引 用 计 数 在 函 数 返 回 前 不 会 增加 。

CO leDocObjectItem::GetPageCount

BOOL GetPageCount(LPLONG pnFirstPage , LPLONG pcPages );

返 回 值

成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

pnFirstPage

指 向 文 档 的 第 一 页 的 号 码 的 指 针 。 可 以 是 NULL , 这 表 明 调 用 者 不 需 要 这个 号 码 。

pcPages

指 向 文 档 的 总 页 数 的 指 针 。 可 以 是 NULL , 这 表 明 调 用 者 不 需 要 这 个 数 字 。

说 明

调 用 这 个 成 员 函 数 可 以 获 得 文 档 中 的 页 数 。

请 参 阅 IPrint::GetPageInfo

CO leDocObjectItem::OnPreparePrinting

static BOOL OnPreparePrinting(CView* pCalle r,CPrintInfo* pInfo ,BOOL bPrintAll

= TRUE);

返 回 值

如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

pCaller

指向 CView 对 象 的 指 针 , 该 对 象 用 来 发 送 打 印 命 令 。

pInfo

指向 CPrintInfo 对 象 的 指 针 , 该 对 象 用 来 描 述 要 打 印 的 作 业 。

bPrintAll

指 明 是 否 是 整 个 文 档 都 要 打 印 。

说 明

框 架 调 用 这 个 成 员 函 数 来 准 备 一 个 要 打 印 的 文 档 。

请 参 阅 COleDocObjectItem::OnPrint

CO leDocObjectItem::OnPrint

static void OnPrint(CView* pCaller ,CPrintInfo* pInfo ,BOOL bPrintAll = TRUE);

参 数

pCaller

指向 CView 对 象 的 指 针 , 该 对 象 用 来 发 送 打 印 命 令 。

pInfo

指向 CPrintInfo 对 象 的 指 针 , 该 对 象 用 来 描 述 要 打 印 的 作 业 。

bPrintAll

指 明 是 否 是 整 个 文 档 都 要 打 印 。

说 明

框 架 调 用 这 个 成 员 函 数 来 打 印 一 个 文 档 。

请 参 阅 COleDocObjectItem::OnPreparePrinting