IPersistFile::Save

Saves a copy of the object into the specified file.

HRESULT Save(

LPCOLESTR pszFileName,
//Pointer to absolute path of the file where the object is saved
BOOL fRemember
//Specifies whether the file is to be the current working file or not
);

Parameters

pszFileName

[in]Points to a zero-terminated string containing the absolute path of the file to which the object should be saved. If pszFileName is NULL, the object should save its data to the current file, if there is one.

fRemember

[in]Indicates whether the pszFileName parameter is to be used as the current working file. If TRUE, pszFileName becomes the current file and the object should clear its dirty flag after the save. If FALSE, this save operation is a "Save A Copy As ..." operation. In this case, the current file is unchanged and the object should not clear its dirty flag. If pszFileName is NULL, the implementation should ignore the fRemember flag.

Return Values

S_OK

The object was successfully saved.

E_FAIL

The file was not saved.

IPersistFile::Save STG_E_* errors.

Comments

This method saves the object to the specified file. There are three different save scenarios that can use this method:

Save

The caller calls the IPersistFile::GetCurFile method first to determine whether the object has an associated filename. If it does, the caller specifies NULL for the pszFileName parameter in this method to indicate that the object should "Save" to its current file. The caller must call the IPersistFile::SaveCompleted method to indicate completion.

Save As

The caller specifies TRUE in the fRemember parameter and a non-NULL value for the pszFileName parameter to indicate saving to a new file. The caller must call the IPersistFile::SaveCompleted method to indicate completion.

Save a Copy As

The caller specifies FALSE in the fRemember parameter and a non-NULL value for the pszFileName parameter to save a copy to the specified file.

The implementor must detect which save scenario is being requested by the caller. If the pszFileName parameter is NULL, the Save scenario is being requested. If the pszFileName parameter is not NULL, use the value of the fRemember parameter to distinguish between a Save As and a Save a Copy As call.

In the "Save" or "Save As" scenarios, the IPersistFile::Save method clears the internal dirty flag after the save and sends IAdviseSink::OnSave notifications to any advisory connections (see also IOleAdviseHolder::SendOnSave). Also, in these scenarios, the object is in NoScribble mode until it receives an IPersistFile::SaveCompleted call. In NoScribble mode, the object must not write to the file.

In the "Save As" scenario, the implementation should also send IAdviseSink::OnRename notifications to any advisory connections (see also IOleAdviseHolder::SendOnRename).

In the "Save a Copy As" scenario, the implementation does not clear the internal dirty flag after the save.

Notes to Callers

OLE does not call IPersistFile::Save. Typically, applications do not either.

See Also

IOleAdviseHolder::SendOnRename, IOleAdviseHolder::SendOnSave, IPersistFile::GetCurFile, IPersistFile::SaveCompleted

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
Databases for Amazon shops developers
Amazon Categories Database
Browse Nodes Database