46 lines
1.6 KiB
C++
46 lines
1.6 KiB
C++
#ifndef __IPSTG_H__
|
|
#define __IPSTG_H__
|
|
|
|
//
|
|
// CImpIPersistStorage works very well along-side an IPersistStreamInit
|
|
// implementation.
|
|
//
|
|
// IE30's CShellEmbedding implemented this interface because it was
|
|
// an embedding must-have. But none of our objects were marked as
|
|
// embeddable, so we really didn't need it.
|
|
//
|
|
// I pulled the implementation to a new class that can easily be
|
|
// included into any object that needs an IPersistStorange implementation
|
|
// that delegates to the object's IPersistStreamInit implementation.
|
|
//
|
|
class CImpIPersistStorage : public IPersistStorage
|
|
{
|
|
public:
|
|
// *** IUnknown ***
|
|
virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj) PURE;
|
|
virtual STDMETHODIMP_(ULONG) AddRef(void) PURE;
|
|
virtual STDMETHODIMP_(ULONG) Release(void) PURE;
|
|
|
|
// *** IPersist ***
|
|
virtual STDMETHODIMP GetClassID(CLSID *pClassID) PURE;
|
|
|
|
// *** IPersistStorage ***
|
|
virtual STDMETHODIMP IsDirty(void) PURE; // matches IPersistStreamInit
|
|
virtual STDMETHODIMP InitNew(IStorage *pStg);
|
|
virtual STDMETHODIMP Load(IStorage *pStg);
|
|
virtual STDMETHODIMP Save(IStorage *pStgSave, BOOL fSameAsLoad);
|
|
virtual STDMETHODIMP SaveCompleted(IStorage *pStgNew);
|
|
virtual STDMETHODIMP HandsOffStorage(void);
|
|
|
|
// These happen to match IPersistStreamInit methods.
|
|
// They should update the dirty state of the object as
|
|
// returned from IsDirty().
|
|
//
|
|
virtual STDMETHODIMP Load(IStream *pStm) PURE;
|
|
virtual STDMETHODIMP Save(IStream *pStm, BOOL fClearDirty) PURE;
|
|
virtual STDMETHODIMP InitNew(void) PURE;
|
|
};
|
|
|
|
#endif // __IPSTG_H__
|
|
|