/**********************************************************************
- File Name: DocData.h
- Date: 12/10/2003 4:41:23 PM
- Author: Michael Sheinin
- Description :
The declaration of IVsPersistDocData and IPersistFileFormat interfaces.
The number of methods, type of arguments and return values were obtained
while tracing the original "bined" package activity.
The CDocumentClass implements both interfaces above.
- Notes:
**********************************************************************/
#pragma once
#include <unknwn.h>
// GUID defined in .CPP
//static const GUID IID_IVsPersistDocData = {0xD5D49C61,0x1C0B,0x4EA1,0x9A,0xDB,0xA7,0x9F,0xB1,0xDB,0xC7,0xB5};
interface IVsPersistDocData : public IUnknown
{
virtual STDMETHODIMP PD_Stub3( void* p1 ) = 0;
virtual STDMETHODIMP PD_Stub4( BOOL* pbDocNotSaved ) = 0;
virtual STDMETHODIMP PD_Stub5( void* p1 ) = 0;
virtual STDMETHODIMP PD_LoadDocData( LPCOLESTR wszFileName ) = 0;
virtual STDMETHODIMP PD_SaveDocData( DWORD dwFlag, OUT LPWSTR* pbstr, OUT BOOL *pbCn ) = 0;
virtual STDMETHODIMP PD_Stub8( void ) = 0;
virtual STDMETHODIMP PD_Stub9( void* p1, void* p2, void* p3 ) = 0;
virtual STDMETHODIMP PD_Stub10( void* p1, void* p2, void* p3, void* p4 ) = 0;
virtual STDMETHODIMP PD_SetDocChanged( BOOL* pChanged ) = 0;
virtual STDMETHODIMP PD_Stub12( void* p1 ) = 0;
};
// GUID defined in .CPP
//static const GUID IID_IPersistFileFormat = {0x3AFAE242,0xB530,0x11D0,0x81,0x99,0x00,0xA0,0xC9,0x1B,0xBE,0xE3};
interface IPersistFileFormat : public IUnknown
{
virtual STDMETHODIMP PF_Stub3( void* p1 ) = 0;
virtual STDMETHODIMP PF_Stub4( void* p1 ) = 0;
virtual STDMETHODIMP PF_Stub5( void* p1 ) = 0;
virtual STDMETHODIMP PF_Stub6( void* p1, void* p2, void* p3 ) = 0;
virtual STDMETHODIMP PF_Save( LPCWSTR szFName, BOOL bRem, DWORD nFormIndx ) = 0;
virtual STDMETHODIMP PF_Stub8( void* p1 ) = 0;
virtual STDMETHODIMP PF_Stub9( LPCWSTR* psz1, LPCWSTR* psz2 ) = 0;
virtual STDMETHODIMP PF_Stub10( LPCWSTR* p1 ) = 0;
};
class CMediator;
class CHistogram;
class CFileInfo;
class CDocumentData : public IVsPersistDocData, public IPersistFileFormat
{
public:
//class
CDocumentData();
~CDocumentData();
void Attach( CMediator* pMdtr );
//IUnknown:
STDMETHODIMP QueryInterface( REFIID rid, void** ppvObject );
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
//IVsPeristDocData
STDMETHODIMP PD_Stub3( void* p1 );
STDMETHODIMP PD_Stub4( BOOL* pbDocNotSaved );
STDMETHODIMP PD_Stub5( void* p1 );
STDMETHODIMP PD_LoadDocData( LPCOLESTR wszFileName );
STDMETHODIMP PD_SaveDocData( DWORD dwFlag, OUT LPWSTR* pbstr, OUT BOOL *pbCn );
STDMETHODIMP PD_Stub8( void );
STDMETHODIMP PD_Stub9( void* p1, void* p2, void* p3 );
STDMETHODIMP PD_Stub10( void* p1, void* p2, void* p3, void* p4 );
STDMETHODIMP PD_SetDocChanged( BOOL* pChanged );
STDMETHODIMP PD_Stub12( void* p1 );
//IPersistFileFormat
STDMETHODIMP PF_Stub3( void* p1 );
STDMETHODIMP PF_Stub4( void* p1 );
STDMETHODIMP PF_Stub5( void* p1 );
STDMETHODIMP PF_Stub6( void* p1, void* p2, void* p3 );
STDMETHODIMP PF_Save( LPCWSTR szFName, BOOL bRem, DWORD nFormIndx );
STDMETHODIMP PF_Stub8( void* p1 );
STDMETHODIMP PF_Stub9( LPCWSTR* p1, LPCWSTR* p2 );
STDMETHODIMP PF_Stub10( LPCWSTR* p1 );
// Demo functionality:
inline DWORD QueryCommandsState() { return m_dwCmdState; };
HRESULT ExecCommand(ULONG uCmdID);
protected:
ULONG m_uRefCnt;
LPCWSTR m_szFileName;
CMediator* m_pMdtr;
// Demo functionality
CHistogram* m_pHist;
CFileInfo* m_pInfo;
DWORD m_dwCmdState;
};