COleServerDoc::OnExecOleCmd

框架调用此函数执行一个指定的命令或显示命令的帮助。

virtual HRESULT OnExecOleCmd( 
   const GUID* pguidCmdGroup, 
   DWORD nCmdID, 
   DWORD nCmdExecOpt, 
   VARIANTARG* pvarargIn, 
   VARIANTARG* pvarargOut 
);

参数

  • pguidCmdGroup
    标识组命令为GUID的指针。可以是指示默认的命令组的 NULL

  • nCmdID
    要执行的命令。必须在 pguidCmdGroup确定的组中。

  • nCmdExecOut
    这种对象应执行该命令,一个或多个从 OLECMDEXECOPT 枚举的下列值:

  •    OLECMDEXECOPT_DODEFAULT

  •    OLECMDEXECOPT_PROMPTUSER

  •    OLECMDEXECOPT_DONTPROMPTUSER

  •    OLECMDEXECOPT_SHOWHELP

  • pvarargIn
    对包含命令的 VARIANTARG 的指针输入参数。可以是 NULL

  • pvarargOut
    用于接收输出的 VARIANTARG 的指针返回从命令的值。可以是 NULL

返回值

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

说明

E_UNEXPECTED

意外的发生错误。

E_FAIL

发生错误。

E_NOTIMPL

指示MFC应尝试转换和计划命令

OLECMDERR_E_UNKNOWNGROUP

pguidCmdGroup 非NULL,但未指定已识别的命令组

OLECMDERR_E_NOTSUPPORTED

nCmdID 在组 pguidCmdGroup中未被识别为有效的命令

OLECMDERR_DISABLED

nCmdID 确定的命令处于禁用状态,并且无法执行

OLECMDERR_NOHELP

在命令的帮助确定由 nCmdID,但没有帮忙请求的调用方可用

OLECMDERR_CANCELED

用户取消了执行

备注

COleCmdUI 可用于启用,更新和设置DocObject用户界面命令其他属性。在命令初始化后,可以执行它们与 OnExecOleCmd

框架在尝试转换调用函数,并安排OLE文档命令。您不需要重写此功能添加到标准OLE文档命令的处理,但是,您必须提供重写给此功能,如果要处理接受参数或返回结果的自定义命令或处理命令。

大多数命令不带参数或返回值。对于大多数命令调用方可以通过 pvarargIn 和 pvarargOut的 NULL的。设置为所需的输入值命令,调用方可以声明和初始化变量的 VARIANTARG 和通过指针到 pvarargIn的变量。对于需要一个唯一值的命令,参数直接在 VARIANTARG 可以存储并传递给函数。必须在 VARIANTARG 中打包多个参数使用一个支持的类型(例如 IDispatchSAFEARRAY )。

同样,因此,如果命令返回参数调用方应声明 VARIANTARG,初始化到 VT_EMPTY并将其在 pvarargOut的地址。如果命令返回单个值,对象直接在 pvarargOut可以存储该值。多个输出的值必须在某些方面是打包的相应 VARIANTARG的。

此功能的基类实现将遍历 OLE_COMMAND_MAP 结构与命令目标并尝试计划命令到相应的处理程序。这次基类的实现只与不接受参数或返回值的指令一起使用。如果需要接受参数或返回值的处理命令,必须重写此功能和与 pvarargIn 和 pvarargOut 参数一起使用。

要求

Header: afxole.h

请参见

参考

COleServerDoc选件类

层次结构图

COleCmdUI选件类