|
IPersistStorage::Save
Saves an object, and any nested objects that it contains, into the specified
storage object. The object is placed in NoScribble mode, and it must not write
to the specified storage until it receives a call to its IPersistStorage::SaveCompleted method.
HRESULT Save(
IStorage *pStgSave,
| //Pointer to storage object
| BOOL fSameAsLoad
| //Indicates whether the specified storage object is the current one
| );
|
|
Parameters
pStgSave
[in]Points to the storage object into which the component object is to be
saved.
fSameAsLoad
[in]Indicates whether the specified storage object is the current one, which
was passed to the object by one of the following calls:
This parameter is set to FALSE when performing a Save As or Save A Copy To
operation or when performing a full save. In the latter case, this method saves to
a temporary file, deletes the original file, and renames the temporary file.
This parameter is set to TRUE to perform a full save in a low-memory situation
or to perform a fast incremental save in which only the dirty components are
saved.
Return Values
S_OK
The object was successfully saved.
STG_E_MEDIUMFULL
The object was not saved because of a lack of space on the disk.
E_FAIL
The object could not be saved due to errors other than a lack of disk space.
Comments
This method saves an object, and any nested objects it contains, into the
specified storage object. It also places the component object into NoScribble mode.
Thus, the component object cannot write to its storage object until a
subsequent call to the IPersistStorage::SaveCompleted method returns the object to Normal mode.
If the storage object is the same as the one it was loaded or created from,
the save operation may be able to write incremental changes to the storage
object. Otherwise, a full save must be done.
This method recursively calls the IPersistStorage::Save method, the OleSave function, or the IStorage::CopyTo method to save its nested objects.
This method does not call the IStorage::Commit method. Nor does it write the class identifier to the storage object. Both of
these tasks are the responsibilities of the caller.
Notes to Callers
Rather than calling IPersistStorage::Load directly, you typically call the OleSave helper function which performs the following steps:
- Call the WriteClassStg function to write the class identifier for the object to the storage.
- Call the IPersistStorage::Save method.
- If needed, call the IStorage::Commit method on the storage object.
Then, a container application performs any other operations necessary to
complete the save and calls the SaveCompleted method for each component object.
If an embedded object passed the IPersistStorage::Save method to its nested objects, it must wait until it receives a call to its IPersistStorage::SaveCompleted method before calling the IPersistStorage::SaveCompleted method for its nested objects.
See Also
IPersistStorage::InitNew, IPersistStorage::Load, IPersistStorage::SaveCompleted, IStorage::Commit, IStorage::CopyTo, OleSave, WriteClassStg, WriteFmtUserTypeStg
| Last news from Greatis Software |
 |
|
Nostalgia .Net |
|
.Net is powerful, but not all-powerful, so sometimes we need to use Win32 API for our .Net applications. It's simple enough with Platform Invoke if you have Win32 skill, but we do not always have time to dig the ancient documentation, declare the special types that are compatible with Win32, find the values of the Win32's constants and so on. Nostalgia .Net offers several simple-to-use classes, and components that will allow you to forget about the headache of Win32 and just use the power of Win32 in your application the same way as you use the native. Net classes. More » |
| Recommended software for developers |
 |
|
Ultimate Pack |
|
Component pack for Delphi and C++ Builder that contains runtime form designer, runtime object inspector, print suite and much more for the very special price. More » |
 |
|
Form Designer .Net |
|
Unique runtime form design solution that allows to edit any form in .Net WinForms application at runtime with full source codes for only 300 euro! More » |
 |
|
Print Suite .Net |
|
Print Suite .Net is a set of components for easy printing texts, images and grids from your WinForms applications. Full C# source codes are available More » |
 |
|
Gradient Controls .Net |
|
Gradient Controls .Net offers controls with gradient background feature. Labels, panels and so on... Full C# source codes are available More » |
 |
|
Greatis iGrid |
|
iGrid plots drawing grid right over your desktop, so you can use it everywhere, with any drawing application without any special plugins for different graphic editors. More » |
All the contacts and projectsDmitry Vasiliev (just.dmitry)
Related LinksSoftware for Visual Studio .NET developers Software for Delphi and C++ Builder developers Software for Visual Basic 6 developers Delphi Tips&Tricks MegaDetailed.NET More Online Helps Win32 Programmer's Reference Win32 Multimedia Programmer's Reference OLE Programmer's Reference Microsoft Windows Pen API Programmer's Reference Microsoft Windows Sockets 2 Reference Microsoft Windows Telephony API (TAPI) Programmer's Reference Unix Manual Pages
|