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
传 递 的 命 令 必 须 是 属 于 这 个 组 的 。
调 用 这 个 成 员 函 数 执 行 由 用 户 指 定 的 命 令 。
参 数 pguidCmdGroup 和 nCmdID 一 起 唯 一 确 定 了 要 激 活 的 命 令 。 参 数
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