IPersistMessage::SaveCompleted

适用于:Outlook 2013 | Outlook 2016

通知表单保存操作已完成。

HRESULT SaveCompleted(
  LPMESSAGE pMessage
);

参数

pMessage

[in]指向新保存的消息的指针。

返回值

S_OK

通知成功。

E_INVALIDARG

pMessage 参数为 NULL,窗体处于 HandsOffFromNormalHandsOffAfterSave 状态。

E_UNEXPECTED

窗体未处于以下状态之一:

备注

表单查看器调用 IPersistMessage::SaveCompleted 方法,以通知表单已保存所有挂起的更改。 仅当窗体处于以下状态之一时,才应调用 SaveCompleted

  • HandsOffFromNormal

  • HandsOffAfterSave

  • NoScribble

针对实现者的说明

SaveCompleted 方法可执行多种可能的操作,具体取决于消息指针参数包含的内容以及消息处于什么状态。 但是,当操作成功时,始终保存 pMessage 参数指向的消息的当前状态,并将窗体转换为其 Normal 状态。

下表描述了影响在 SaveCompleted 实现中应执行的操作的条件。

Condition 操作
pMessage 参数为 NULL,IPersistMessage::Save 方法的 fSameAsLoad 参数设置为 TRUE。 调用所有已注册查看器的 IMAPIViewAdviseSink::OnSaved 方法,将表单标记为干净,并返回S_OK。
pMessage 参数为 NULL,IPersistMessage::Save 方法的 fSameAsLoad 参数设置为 FALSE。 返回S_OK。
窗体处于 HandsOffFromNormal 状态。 释放当前消息,并将其替换为 pMessage 参数指向的消息。 调用替换消息的 IUnknown::AddRef 方法并返回S_OK。
窗体处于 HandsOffAfterSave 状态。 调用所有已注册查看器的 IMAPIViewAdviseSink::OnSaved 方法,将表单标记为干净,并返回S_OK。
窗体处于 NoScribble 状态。 释放当前消息,并将其替换为 pMessage 指向的消息。 调用替换消息的 IUnknown::AddRef 方法。 调用所有已注册查看器的 IMAPIViewAdviseSink::OnSaved 方法,将表单标记为干净,并返回S_OK。
窗体处于 HandsOff 状态之一, pMessage 参数设置为 NULL。 返回E_INVALIDARG。
窗体的状态不是 HandsOff 状态之一或 NoScribble 状态。 返回E_UNEXPECTED。

有关保存存储对象的详细信息,请参阅 IPersistStorage::SaveCompletedIPersistFile::SaveCompleted 方法的文档。

另请参阅