IPersistMessage::SaveCompleted
适用于:Outlook 2013 | Outlook 2016
通知表单保存操作已完成。
HRESULT SaveCompleted(
LPMESSAGE pMessage
);
参数
pMessage
[in]指向新保存的消息的指针。
返回值
S_OK
通知成功。
E_INVALIDARG
pMessage 参数为 NULL,窗体处于 HandsOffFromNormal 或 HandsOffAfterSave 状态。
E_UNEXPECTED
窗体未处于以下状态之一:
HandsOffFromNormal
HandsOffAfterSave
备注
表单查看器调用 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::SaveCompleted 或 IPersistFile::SaveCompleted 方法的文档。