消息处理和命令目标

命令调度接口 IOleCommandTarget 定义一个简单且可扩展机制查询和执行命令。,因为它完全依赖于标准命令,此机制比自动化的 IDispatch 简单;命令很少有参数,因此,类型信息不是包含 (类型安全为命令参数减小)。

在命令调度接口设计,每个命令属于自身标识的 GUID“命令组”。因此,任何人都在该组中可以定义新组和定义所有命令,而无需任何需要与 Microsoft 或其他供应商联系。(这在本质上是定义相同的方式与 dispinterface 以及在自动化的 dispIDs 。存在重叠在此处,不过,此命令传送 framework 较大型的地仅用于命令传送不适用于脚本/可编程性作为自动处理。)

IOleCommandTarget 处理以下方案:

  • 当对象处于就地激活,因此,只有对象的工具栏通常会显示和对象的工具栏可以具有特定的按钮。 打印打印预览保存、 New, 缩放和其他容器的命令。(就地激活标准建议对象从其工具栏移除这些按钮或至少禁用它们。此模型允许这些命令启用,仍旧路由到正确的处理程序。)当前,没有对象的结构可以计划这些命令到容器。

  • 在活动文档中嵌入在活动文档容器 (如 Office 活页夹),容器可能需要发送命令这样 打印页安装程序属性,同时,其他到包含活动文档。

此简单命令传送可以通过现有自动测试条件并 IDispatch进行处理。但是,开销包含与 IDispatch 不必要的在此处多,因此, IOleCommandTarget 提供更简单的方法实现的目的:

interface IOleCommandTarget : IUnknown

{

HRESULT QueryStatus(

[in] GUID *pguidCmdGroup,

[in] ULONG cCmds,

[in,out][size_is(cCmds)] OLECMD *prgCmds,

[in,out] OLECMDTEXT *pCmdText);

HRESULT Exec(

[in] GUID *pguidCmdGroup,

[in] DWORD nCmdID,

[in] DWORD nCmdExecOpt,

[in] VARIANTARG *pvaIn,

[in,out] VARIANTARG *pvaOut);

}

此处 QueryStatus 方法测试特定设置命令,设置的标识。 GUID,是否支持。这称为 OLECMD 值的加载 (结构) 以及支持的列表命令以及返回描述命令和状态信息的名称文本。当调用方希望调用命令时,可以通过命令 (和设置的 GUID)。 Exec 与选项和参数时,获取返回值。

请参见

概念

活动文档容器