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 参数中传递给 DoVerbDoVerb 的典型实现包含一个 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 方法调用窗体上的谓词。

另请参阅

IMAPIForm::SetViewContext

IMAPIViewContext::GetViewStatus

IMAPIForm : IUnknown

MFCMAPI 代码示例

表单谓词