//+------------------------------------------------------------------- // // File: bscbnd.hxx // // Contents: This file contins the DLL entry points // LibMain // DllGetClassObject (Bindings key func) // DllCanUnloadNow // CBasicBndCF (class factory) // History: 30-Mar-92 SarahJ Created // //--------------------------------------------------------------------- #ifndef __BSCBND_H__ #define __BSCBND_H__ extern "C" const GUID CLSID_BasicBnd; extern "C" const GUID CLSID_TestEmbed; #define STGM_DFRALL (STGM_READWRITE | STGM_TRANSACTED | STGM_SHARE_DENY_WRITE) // // Define the interface we are going to use here - avoiding MIDL stuff // //+------------------------------------------------------------------- // // Class: CBasicBndCF // // Synopsis: Class Factory for CBasicBnd // // Methods: IUnknown - QueryInterface, AddRef, Release // IClassFactory - CreateInstance // // History: 21-Mar-92 SarahJ Created // //-------------------------------------------------------------------- class FAR CBasicBndCF: public IClassFactory { public: // Constructor/Destructor CBasicBndCF(); ~CBasicBndCF(); // IUnknown STDMETHODIMP QueryInterface(REFIID iid, void FAR * FAR * ppv); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); // IClassFactory STDMETHODIMP CreateInstance(IUnknown FAR* pUnkOuter, REFIID iidInterface, void FAR* FAR* ppv); STDMETHODIMP LockServer(BOOL fLock); BOOL ReleaseClass(void); private: ULONG _cRefs; }; //+------------------------------------------------------------------- // // Class: CBasicBnd // // Synopsis: Test class CBasicBnd // // Methods: // // History: 21-Mar-92 SarahJ Created // //-------------------------------------------------------------------- class FAR CBasicBnd: public IPersistFile, public IOleClientSite, public IOleObject, public IOleItemContainer { public: // *** Constructor/Destructor CBasicBnd(IUnknown *punk); ~CBasicBnd(); // *** IUnknown STDMETHODIMP QueryInterface(REFIID iid, void FAR * FAR * ppv); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); // *** IPersist STDMETHODIMP GetClassID(LPCLSID lpClassID); // *** IPersitFile STDMETHODIMP IsDirty(); STDMETHODIMP Load(LPCOLESTR lpszFileName, DWORD grfMode); STDMETHODIMP Save(LPCOLESTR lpszFileName, BOOL fRemember); STDMETHODIMP SaveCompleted(LPCOLESTR lpszFileName); STDMETHODIMP GetCurFile(LPOLESTR FAR * lplpszFileName); // *** IOleObject methods *** STDMETHODIMP SetClientSite( LPOLECLIENTSITE pClientSite); STDMETHODIMP GetClientSite( LPOLECLIENTSITE FAR* ppClientSite); STDMETHODIMP SetHostNames( LPCOLESTR szContainerApp, LPCOLESTR szContainerObj); STDMETHODIMP Close(DWORD dwSaveOption); STDMETHODIMP SetMoniker( DWORD dwWhichMoniker, LPMONIKER pmk); STDMETHODIMP GetMoniker( DWORD dwAssign, DWORD dwWhichMoniker, LPMONIKER FAR* ppmk); STDMETHODIMP InitFromData( LPDATAOBJECT pDataObject, BOOL fCreation, DWORD dwReserved); STDMETHODIMP GetClipboardData( DWORD dwReserved, LPDATAOBJECT FAR* ppDataObject); STDMETHODIMP DoVerb( LONG iVerb, LPMSG lpmsg, LPOLECLIENTSITE pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect); STDMETHODIMP EnumVerbs(LPENUMOLEVERB FAR* ppenumOleVerb); STDMETHODIMP Update(void); STDMETHODIMP IsUpToDate(void); STDMETHODIMP GetUserClassID(CLSID FAR *pClsid); STDMETHODIMP GetUserType(DWORD dwFormOfType, LPOLESTR FAR* pszUserType); STDMETHODIMP SetExtent( DWORD dwDrawAspect, LPSIZEL lpsizel); STDMETHODIMP GetExtent( DWORD dwDrawAspect, LPSIZEL lpsizel); STDMETHODIMP Advise( LPADVISESINK pAdvSink, DWORD FAR* pdwConnection); STDMETHODIMP Unadvise( DWORD dwConnection); STDMETHODIMP EnumAdvise( LPENUMSTATDATA FAR* ppenumAdvise); STDMETHODIMP GetMiscStatus(DWORD dwAspect, DWORD FAR* pdwStatus); STDMETHODIMP SetColorScheme( LPLOGPALETTE lpLogpal); // *** IParseDisplayName method *** STDMETHODIMP ParseDisplayName( LPBC pbc, LPOLESTR lpszDisplayName, ULONG FAR* pchEaten, LPMONIKER FAR* ppmkOut) ; // *** IOleContainer methods *** STDMETHODIMP EnumObjects(DWORD grfFlags, LPENUMUNKNOWN FAR* ppenumUnknown); STDMETHODIMP LockContainer(BOOL fLock); // *** IOleItemContainer methods *** STDMETHODIMP GetObject( LPOLESTR lpszItem, DWORD dwSpeedNeeded, LPBINDCTX pbc, REFIID riid, LPVOID FAR* ppvObject); STDMETHODIMP GetObjectStorage( LPOLESTR lpszItem, LPBINDCTX pbc, REFIID riid, LPVOID FAR* ppvStorage); STDMETHODIMP IsRunning(LPOLESTR lpszItem) ; // *** IOleClientSite STDMETHODIMP SaveObject (void); STDMETHODIMP GetContainer (LPOLECONTAINER FAR *ppContainer); STDMETHODIMP ShowObject (void); STDMETHODIMP OnShowWindow (BOOL fShow); STDMETHODIMP RequestNewObjectLayout (void); private: IUnknown * _punk; IMoniker * _pmkContainer; IStorage * _psStg1; IStorage * _psStg2; }; class CUnknownBasicBnd : public IUnknown { public: CUnknownBasicBnd(IUnknown *punk); ~CUnknownBasicBnd(void); // *** IUnknown STDMETHODIMP QueryInterface(REFIID iid, void FAR * FAR * ppv); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); private: CBasicBnd * _pbasicbnd; ULONG _cRefs; }; #endif // __BSCBND_H__