IMAPIForm::DoVerb
适用于:Outlook 2013 | Outlook 2016
请求表单执行与特定谓词关联的任何任务。
HRESULT DoVerb(
LONG iVerb,
LPMAPIVIEWCONTEXT lpViewContext,
ULONG_PTR hwndParent,
LPCRECT lprcPosRect
);
参数
iVerb
[in]与表单谓词之一关联的数字。
lpViewContext
[in]指向视图上下文对象的指针。 lpViewContext 参数可以为 null。
hwndParent
[in]此方法显示的任何对话框或窗口的父窗口的句柄。 如果对话框或窗口不是模式, 则 hwndParent 参数应为 null 。
lprcPosRect
[in]指向 Win32 RECT 结构的指针,该结构包含窗体窗口的大小和位置。
返回值
S_OK
已成功调用谓词。
OLEOBJ_S_CANNOT_DOVERB_NOW
由 iVerb 参数表示的谓词有效,但窗体无法执行当前与其关联的操作。
备注
表单查看者调用 IMAPIForm::D oVerb 方法,以请求窗体执行与表单支持的每个谓词关联的任务。
每个受支持的谓词都由一个数值标识,该值在 iVerb 参数中传递给 DoVerb 。 DoVerb 的典型实现包含一个 switch 语句,用于测试对表单的 iVerb 参数有效的值。
针对实现者的说明
如果表单查看器在 lpViewContext 参数中指定视图上下文,请在 DoVerb 实现中使用它,而不是在对 IMAPIForm::SetViewContext 方法的早期调用中传递的视图上下文。 对内部数据结构进行任何必要的更改,并且不保存视图上下文。
在 DoVerb 实现中执行以下任务:
执行与 iVerb 参数关联的特定谓词所需的任何代码。
如有必要,请还原原始视图上下文。
如果传入了未知谓词编号,则返回MAPI_E_NO_SUPPORT。 否则,根据执行的任何谓词的成功或失败返回结果。
关闭窗体。 在 DoVerb 调用完成后关闭表单始终由你负责。
对于 DoVerb 调用,某些谓词(如 Print)应是模式的 ,也就是说,在 DoVerb 调用返回之前,必须完成指示的操作。
若要获取窗体窗口使用的 RECT 结构,请调用 GetWindowRect 函数。
不要在 hwndParent 参数中保存句柄,因为尽管它通常在 DoVerb 完成之前保持有效,但在调用返回时可以立即销毁该句柄。
给调用方的说明
可以通过将 lpViewContext 指向从其 IMAPIViewContext : :GetViewStatus 方法返回VCSTATUS_MODAL标志的视图上下文实现,使非模式谓词充当模式谓词。
有关 MAPI 中谓词的详细信息,请参阅 表单谓词。 有关如何在 OLE 中处理谓词的详细信息,请参阅 OLE 和数据传输。
MFCMAPI 引用
有关 MFCMAPI 示例代码,请参阅下表。
文件 | 函数 | Comment |
---|---|---|
MyMAPIFormViewer.cpp |
CMyMAPIFormViewer::CallDoVerb |
MFCMAPI 使用 IMAPIForm::D oVerb 方法调用窗体上的谓词。 |