/*************************************************************************/ /* Copyright (C) 1999 Microsoft Corporation */ /* File: CCObj.h */ /* Description: Contains holder for container objects. */ /*************************************************************************/ #ifndef __CCOBJ_H #define __CCOBJ_H //#include "BBtn.h" #include "chobj.h" /*************************************************************************/ /* Class: CContainerObject */ /* Description: Object that contains container. This is a simple wrapper */ /* inorder to have really just one cobtainer site, but at the same time */ /* support the windowless activation. We pass in this object instead of */ /* the real site, so we can track which windowless object has focus and */ /* or capture. */ /*************************************************************************/ class CContainerObject: // #### BEGIN CONTAINER SUPPORT #### public IOleClientSite, //public IOleInPlaceFrame, //public IOleControlSite, public IOleInPlaceSiteWindowless, public IOleContainer, // public IMFOleInPlaceSiteWindowless, public IObjectWithSite, public IPropertyBag // #### END CONTAINER SUPPORT #### { protected: CContainerObject(){Init();}; public: virtual ~CContainerObject(){ATLTRACE(TEXT("In the CContainerObject object destructor \n")); ;}; CContainerObject(IUnknown* pUnknown, CHostedObject* pObj); STDMETHOD(QueryInterface)(const IID& iid, void**ppv); STDMETHOD_(ULONG,AddRef)( void); STDMETHOD_(ULONG,Release)( void); // needed to initialize this object HRESULT SetObjects(IUnknown* pUnknown, CHostedObject* pObj); HRESULT InvalidateObjectRect(); // IOleClientSite STDMETHOD(SaveObject)(){ATLTRACENOTIMPL(_T("IOleClientSite::SaveObject"));} STDMETHOD(GetMoniker)(DWORD /*dwAssign*/, DWORD /*dwWhichMoniker*/, IMoniker** /*ppmk*/){ATLTRACENOTIMPL(_T("IOleClientSite::GetMoniker"));} STDMETHOD(GetContainer)(IOleContainer** ppContainer); STDMETHOD(ShowObject)(); STDMETHOD(OnShowWindow)(BOOL fShow); STDMETHOD(RequestNewObjectLayout)(){ATLTRACENOTIMPL(_T("IOleClientSite::RequestNewObjectLayout"));} // IOleWindow STDMETHOD(GetWindow)(HWND *phwnd); STDMETHOD(ContextSensitiveHelp)(BOOL fEnterMode); //IOleInPlaceSite STDMETHOD(CanInPlaceActivate)(); STDMETHOD(OnUIActivate)(); STDMETHOD(OnInPlaceActivate)(); STDMETHOD(GetWindowContext)(IOleInPlaceFrame** ppFrame, IOleInPlaceUIWindow** ppDoc, LPRECT lprcPosRect, LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO pFrameInfo); STDMETHOD(OnUIDeactivate)(BOOL fUndoable); STDMETHOD(OnInPlaceDeactivate)(); STDMETHOD(DiscardUndoState)(); STDMETHOD(DeactivateAndUndo)(); STDMETHOD(OnPosRectChange)(LPCRECT lprcPosRect); STDMETHOD(Scroll)(SIZE scrollExtant); //IOleInPlaceSiteEx STDMETHOD(OnInPlaceActivateEx)(BOOL* pfNoRedraw, DWORD dwFlags); STDMETHOD(OnInPlaceDeactivateEx)(BOOL fNoRedraw); STDMETHOD(RequestUIActivate)(); STDMETHOD(CanWindowlessActivate)(); STDMETHOD(GetCapture)(); STDMETHOD(SetCapture)(BOOL fCapture); STDMETHOD(GetFocus)(); STDMETHOD(SetFocus)(BOOL fFocus); STDMETHOD(GetDC)(LPCRECT /*pRect*/, DWORD /*grfFlags*/, HDC* phDC); STDMETHOD(ReleaseDC)(HDC hDC); STDMETHOD(InvalidateRect)(LPCRECT pRect, BOOL fErase); STDMETHOD(InvalidateRgn)(HRGN hRGN = NULL, BOOL fErase = FALSE); STDMETHOD(ScrollRect)(INT /*dx*/, INT /*dy*/, LPCRECT /*pRectScroll*/, LPCRECT /*pRectClip*/); STDMETHOD(AdjustRect)(LPRECT /*prc*/); STDMETHOD(OnDefWindowMessage)(UINT msg, WPARAM wParam, LPARAM lParam, LRESULT* plResult); // IMFOleInPlaceSiteWindowless STDMETHOD(SetHostedObject)(LONG lVoid); // IOleContainer STDMETHOD(ParseDisplayName)(IBindCtx* /*pbc*/, LPOLESTR /*pszDisplayName*/, ULONG* /*pchEaten*/, IMoniker** /*ppmkOut*/); STDMETHOD(EnumObjects)(DWORD /*grfFlags*/, IEnumUnknown** ppenum); STDMETHOD(LockContainer)(BOOL fLock); //IObjectWithSite STDMETHOD(SetSite)(IUnknown *pUnkSite){ATLTRACENOTIMPL(_T("IObjectWithSite::SetSite"));} STDMETHOD(GetSite)(REFIID riid, void **ppvSite); //IPropertyBag STDMETHOD(Read)(LPCOLESTR pszPropName, VARIANT* pVar, IErrorLog* pErrorLog); STDMETHOD(Write)(LPCOLESTR pszPropName, VARIANT* pVar){ATLTRACENOTIMPL(_T("IPropertyBag::Write"));} protected: // helper functions void Init(); inline HRESULT GetWindowlessSite(CComPtr& pSite); inline HRESULT GetContainer(CComPtr& pContainer); HRESULT ParsePropertyBag(LPCOLESTR pszPropName, VARIANT* pVar, IErrorLog* pErrorLog); private: // private member variables CHostedObject* m_pObj; // object which we are hosting CComPtr m_pUnkContainer; // pointer to our container CComPtr m_spInPlaceFrame; // cached up pointer CComPtr m_spInPlaceUIWindow; // cached up pointer long m_lRefCount; unsigned long m_bLocked:1; };/* end of class CContainerObject */ #endif // end of __CCOBJ_H /*************************************************************************/ /* End of file: CCObj.h */ /*************************************************************************/