IPersistMessage::SaveCompleted

This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

Notifies the form that a save operation has been completed.

HRESULT SaveCompleted(
  LPMESSAGE pMessage
);

Parameters

  • pMessage
    [in] A pointer to the newly saved message.

Return Value

  • S_OK
    The notification was successful.

  • E_INVALIDARG
    The pMessage parameter is NULL and the form is either in the HandsOffFromNormal or HandsOffAfterSave state.

  • E_UNEXPECTED
    The form is not in one of the following states:

Remarks

The IPersistMessage::SaveCompleted method is called by a form viewer to notify the form that all pending changes have been saved. SaveCompleted should be called only when the form is in one of the following states:

  • HandsOffFromNormal

  • HandsOffAfterSave

  • NoScribble

Notes to Implementers

There are several possible actions that the SaveCompleted method can perform, depending on what the message pointer parameter contains, and what state the message is in. However, when an action is successful, always save the current state of the message that the pMessage parameter points to and transition the form to its Normal state.

The following table describes the conditions that affect the actions you should take in your implementation of SaveCompleted.

Condition

Action

The pMessage parameter is NULL and the fSameAsLoad parameter of the IPersistMessage::Save method is set to TRUE.

Call the IMAPIViewAdviseSink::OnSaved method of all registered viewers, mark the form as clean, and return S_OK.

The pMessage parameter is NULL and the fSameAsLoad parameter of the IPersistMessage::Save method is set to FALSE.

Return S_OK.

The form is in the HandsOffFromNormal state.

Release the current message and replace it with the message pointed to by the pMessage parameter. Call the replacement message's IUnknown::AddRef method and return S_OK.

The form is in the HandsOffAfterSave state.

Call the IMAPIViewAdviseSink::OnSaved method of all registered viewers, mark the form as clean, and return S_OK.

The form is in the NoScribble state.

Release the current message and replace it with the message pointed to by pMessage. Call the replacement message's IUnknown::AddRef method. Call the IMAPIViewAdviseSink::OnSaved method of all registered viewers, mark the form as clean, and return S_OK.

The form is in one of the HandsOff states and the pMessage parameter is set to NULL.

Return E_INVALIDARG.

The form is in a state other than one of the HandsOff states or the NoScribble state.

Return E_UNEXPECTED.

For more information about saving storage objects, see the documentation for the IPersistStorage::SaveCompleted or IPersistFile::SaveCompleted methods.

See Also

Reference

IPersistMessage : IUnknown

IPersistStorage::SaveCompleted

IPersistFile::SaveCompleted

Concepts

Form States