IMAPIForm::ShutdownForm
适用于:Outlook 2013 | Outlook 2016
关闭表单。
HRESULT ShutdownForm(
ULONG ulSaveOptions
);
参数
ulSaveOptions
[in]一个 值,该值控制在关闭窗体之前如何或是否保存窗体中的数据。 可以设置以下标志之一:
SAVEOPTS_NOSAVE
不应保存表单数据。
SAVEOPTS_PROMPTSAVE
系统应提示用户保存窗体中任何已更改的数据。
SAVEOPTS_SAVEIFDIRTY
如果表单数据自上次保存以来已更改,则应保存。 如果未显示任何用户界面,窗体可以选择性地切换到使用 SAVEOPTS_NOSAVE 选项的功能。
返回值
S_OK
窗体已关闭。
E_UNEXPECTED
该窗体已通过对 ShutdownForm 的先前调用关闭。
备注
表单查看者调用 IMAPIForm::ShutdownForm 方法以关闭窗体。
针对实现者的说明
在 ShutdownForm 的实现中执行以下任务:
检查查看器是否尚未调用 ShutdownForm,并返回E_UNEXPECTED(如果有)。 虽然这不太可能,但应检查。
调用表单的 IUnknown::AddRef 方法,以便表单和任何内部数据结构的存储在处理完成之前保持可用。
确定表单数据是否有任何未保存的更改。 通过调用查看者的 IMAPIMessageSite::SaveMessage 方法,根据 ulSaveOptions 参数的设置方式保存未保存的数据。
销毁窗体的用户界面窗口。
通过调用其 IUnknown::Release 方法释放表单的邮件和消息网站对象。
通过调用其 IMAPIViewAdviseSink::OnShutdown 方法通知所有注册的观看者挂起的关闭。
调用 IMAPIViewContext::SetAdviseSink 方法,通过将建议接收器指针设置为 null 来取消表单的通知注册。
调用 MAPIFreeBuffer 函数以释放窗体属性的内存。
调用表单的 IUnknown::Release 方法,与步骤 2 中进行的 AddRef 调用匹配。
返回S_OK。
注意
完成这些操作后,表单对象上唯一可以调用的有效方法是来自 IUnknown 接口的方法。
给调用方的说明
当 ShutdownForm 返回时,无论它是否返回错误,都通过调用其 IUnknown::Release 方法释放窗体。 可以放心地忽略 ShutdownForm 返回的任何错误。
另请参阅
IMAPIViewAdviseSink::OnShutdown