/*============================================================================ * * File Name: Tribble.h * * Class Tribble * * Description: Test Class for a tribble - does very little - and so * do tribbles. * * Author: Roger Hughes * * Date: 14/10/98 * * *==============================================================================*/ #if !defined(AFX_TRIBBLE_H__3E17E0C2_6362_11D2_AD73_000000000000__INCLUDED_) #define AFX_TRIBBLE_H__3E17E0C2_6362_11D2_AD73_000000000000__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // interface definition #include "idl\tribblelib.h" class Tribble : public ITribble, IPersistFile, IOleItemContainer { public: Tribble(); virtual ~Tribble(); // ITribble virtual HRESULT STDMETHODCALLTYPE Sleep( void); virtual HRESULT STDMETHODCALLTYPE Wake( void); virtual HRESULT STDMETHODCALLTYPE Eat( const unsigned char __RPC_FAR *strMyFood); virtual HRESULT STDMETHODCALLTYPE put_Name( const unsigned char __RPC_FAR *lpName); virtual HRESULT STDMETHODCALLTYPE put_Colour( const unsigned char __RPC_FAR *lpColour); virtual HRESULT STDMETHODCALLTYPE get_Name( unsigned char __RPC_FAR *lpName); virtual HRESULT STDMETHODCALLTYPE get_Colour( unsigned char __RPC_FAR *lpColour); // IUnknown virtual ULONG STDMETHODCALLTYPE Release(); virtual ULONG STDMETHODCALLTYPE AddRef(); virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void ** pObj); //IPersistFile HRESULT STDMETHODCALLTYPE IsDirty(void); HRESULT STDMETHODCALLTYPE Load(LPCOLESTR pszFileName, DWORD dwMode); HRESULT STDMETHODCALLTYPE Save(LPCOLESTR pszFileName, BOOL fRemember); HRESULT STDMETHODCALLTYPE SaveCompleted(LPCOLESTR pszFileName); HRESULT STDMETHODCALLTYPE GetCurFile(LPOLESTR *ppszFileName); HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID); //IOleItemContainer HRESULT STDMETHODCALLTYPE GetObject( /* [in] */ LPOLESTR pszItem, /* [in] */ DWORD dwSpeedNeeded, /* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [in] */ REFIID riid, /* [iid_is][out] */ void * *ppvObject); HRESULT STDMETHODCALLTYPE GetObjectStorage( /* [in] */ LPOLESTR pszItem, /* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [in] */ REFIID riid, /* [iid_is][out] */ void * *ppvStorage); HRESULT STDMETHODCALLTYPE IsRunning(/* [in] */ LPOLESTR pszItem); HRESULT STDMETHODCALLTYPE EnumObjects( /* [in] */ DWORD grfFlags, /* [out] */ IEnumUnknown * *ppenum); HRESULT STDMETHODCALLTYPE LockContainer( /* [in] */ BOOL fLock); //IParseDisplayName HRESULT STDMETHODCALLTYPE ParseDisplayName( /* [unique][in] */ IBindCtx *pbc, /* [in] */ LPOLESTR pszDisplayName, /* [out] */ ULONG *pchEaten, /* [out] */ IMoniker * *ppmkOut); private: HRESULT ReadStream(IStorage * pIStorage,OLECHAR * pStreamName, CString & strBuffer); CString m_strFood; // Tribbles eat strings long m_cRef; // the reference counter CString m_Name; // Name Property CString m_Colour; // Colour Property CLSID m_ClsId; // The Class ID DWORD m_dwROTFile; // Our ID in the Running Object Table IMoniker * m_pmkFile; // Used to signify our current file in the ROT DWORD m_dwROTCmp; // Our ID in the Running Object Table IMoniker * m_pmkCmp; // Used to signify our file!Item composite in the ROT }; #endif // !defined(AFX_TRIBBLE_H__3E17E0C2_6362_11D2_AD73_000000000000__INCLUDED_)