diff --git a/mozilla/webshell/embed/ActiveX/ControlSite.cpp b/mozilla/webshell/embed/ActiveX/ControlSite.cpp index 6ed24642a8b..7e34f11f3fd 100644 --- a/mozilla/webshell/embed/ActiveX/ControlSite.cpp +++ b/mozilla/webshell/embed/ActiveX/ControlSite.cpp @@ -30,14 +30,28 @@ CControlSite::CControlSite() m_bInPlaceActive = FALSE; m_bUIActive = FALSE; m_bInPlaceLocked = FALSE; + m_bWindowless = FALSE; + + // Initialise ambient properties + m_nAmbientLocale = 0; + m_clrAmbientForeColor = RGB(255,255,255); + m_clrAmbientBackColor = RGB(255,0,0); + m_bAmbientUserMode = true; + m_bAmbientShowHatching = true; + m_bAmbientShowGrabHandles = true; } + CControlSite::~CControlSite() { } -HRESULT CControlSite::InitNew(REFCLSID clsid) + +HRESULT CControlSite::Attach(REFCLSID clsid, HWND hwndParent, const RECT &rcPos, IStream *pInitStream) { + m_hwndParent = hwndParent; + m_rcObjectPos = rcPos; + // TODO see if object is script safe // Create the object @@ -74,7 +88,20 @@ HRESULT CControlSite::InitNew(REFCLSID clsid) m_spIOleObject->SetClientSite(this); } - // TODO load the control from store + // Initialise the control from store + CComQIPtr spIPersistStream = m_spIOleObject; + CComQIPtr spIPersistStreamInit = m_spIOleObject; + if (spIPersistStreamInit && pInitStream == NULL) + { + spIPersistStreamInit->InitNew(); + } + else if (pInitStream) + { + spIPersistStream->Load(pInitStream); + } + + m_spIOleInPlaceObject = m_spObject; + m_spIOleInPlaceObject->SetObjectRects(&m_rcObjectPos, &m_rcObjectPos); // In-place activate the object if (m_bVisibleAtRuntime) @@ -89,11 +116,56 @@ HRESULT CControlSite::InitNew(REFCLSID clsid) m_spIOleObject->SetClientSite(this); } - // TODO create new - return E_NOTIMPL; + return S_OK; } +HRESULT CControlSite::Detach() +{ + if (m_spIOleInPlaceObject) + { + m_spIOleInPlaceObject->InPlaceDeactivate(); + m_spIOleInPlaceObject.Release(); + } + + if (m_spIOleObject) + { + m_spIOleObject->SetClientSite(this); + m_spIOleObject.Release(); + } + + m_spIViewObject.Release(); + m_spObject.Release(); + + return S_OK; +} + + +HRESULT CControlSite::GetControlUnknown(IUnknown **ppObject) +{ + *ppObject = NULL; + if (m_spObject) + { + m_spObject->QueryInterface(IID_IUnknown, (void **) ppObject); + } + return S_OK; +} + + +HRESULT CControlSite::Draw(HDC hdc) +{ + // Draw only when control is windowless or deactivated + if (m_spIViewObject) + { + if (m_bWindowless || !m_bInPlaceActive) + { + RECTL *prcBounds = (m_bWindowless) ? NULL : (RECTL *) &m_rcObjectPos; + m_spIViewObject->Draw(DVASPECT_CONTENT, -1, NULL, NULL, NULL, hdc, prcBounds, NULL, NULL, 0); + } + } + return S_OK; +} + HRESULT CControlSite::DoVerb(LONG nVerb, LPMSG lpMsg) { if (m_spIOleObject == NULL) @@ -105,13 +177,123 @@ HRESULT CControlSite::DoVerb(LONG nVerb, LPMSG lpMsg) } -HRESULT CControlSite::SetObjectPos(const RECT &rcPos) +HRESULT CControlSite::SetPosition(const RECT &rcPos) { m_rcObjectPos = rcPos; + m_spIOleInPlaceObject->SetObjectRects(&m_rcObjectPos, &m_rcObjectPos); + return S_OK; +} + + +/////////////////////////////////////////////////////////////////////////////// +// IDispatch implementation + +HRESULT STDMETHODCALLTYPE CControlSite::GetTypeInfoCount(/* [out] */ UINT __RPC_FAR *pctinfo) +{ return E_NOTIMPL; } +HRESULT STDMETHODCALLTYPE CControlSite::GetTypeInfo(/* [in] */ UINT iTInfo, /* [in] */ LCID lcid, /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo) +{ + return E_NOTIMPL; +} + + +HRESULT STDMETHODCALLTYPE CControlSite::GetIDsOfNames(/* [in] */ REFIID riid, /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames, /* [in] */ UINT cNames, /* [in] */ LCID lcid, /* [size_is][out] */ DISPID __RPC_FAR *rgDispId) +{ + return E_NOTIMPL; +} + + +HRESULT STDMETHODCALLTYPE CControlSite::Invoke(/* [in] */ DISPID dispIdMember, /* [in] */ REFIID riid, /* [in] */ LCID lcid, /* [in] */ WORD wFlags, /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams, /* [out] */ VARIANT __RPC_FAR *pVarResult, /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo, /* [out] */ UINT __RPC_FAR *puArgErr) +{ + if (wFlags & DISPATCH_PROPERTYGET) + { + CComVariant vResult; + + switch (dispIdMember) + { + case DISPID_AMBIENT_FORECOLOR: + vResult = CComVariant((long) m_clrAmbientForeColor); + break; + + case DISPID_AMBIENT_BACKCOLOR: + vResult = CComVariant((long) m_clrAmbientBackColor); + break; + + case DISPID_AMBIENT_LOCALEID: + vResult = CComVariant((long) m_nAmbientLocale); + break; + + case DISPID_AMBIENT_USERMODE: + vResult = CComVariant(m_bAmbientUserMode); + break; + + case DISPID_AMBIENT_SHOWGRABHANDLES: + vResult = CComVariant(m_bAmbientShowGrabHandles); + break; + + case DISPID_AMBIENT_SHOWHATCHING: + vResult = CComVariant(m_bAmbientShowHatching); + break; + + default: + return DISP_E_MEMBERNOTFOUND; + } + + VariantCopy(pVarResult, &vResult); + return S_OK; + } + + return E_FAIL; +} + + +/////////////////////////////////////////////////////////////////////////////// +// IAdviseSink implementation + +void STDMETHODCALLTYPE CControlSite::OnDataChange(/* [unique][in] */ FORMATETC __RPC_FAR *pFormatetc, /* [unique][in] */ STGMEDIUM __RPC_FAR *pStgmed) +{ +} + + +void STDMETHODCALLTYPE CControlSite::OnViewChange(/* [in] */ DWORD dwAspect, /* [in] */ LONG lindex) +{ + // TODO redraw +} + + +void STDMETHODCALLTYPE CControlSite::OnRename(/* [in] */ IMoniker __RPC_FAR *pmk) +{ +} + + +void STDMETHODCALLTYPE CControlSite::OnSave(void) +{ +} + + +void STDMETHODCALLTYPE CControlSite::OnClose(void) +{ +} + + +/////////////////////////////////////////////////////////////////////////////// +// IAdviseSink2 implementation +void STDMETHODCALLTYPE CControlSite::OnLinkSrcChange(/* [unique][in] */ IMoniker __RPC_FAR *pmk) +{ +} + + +/////////////////////////////////////////////////////////////////////////////// +// IAdviseSinkEx implementation + +void STDMETHODCALLTYPE CControlSite::OnViewStatusChange(/* [in] */ DWORD dwViewStatus) +{ +} + + /////////////////////////////////////////////////////////////////////////////// // IOleWindow implementation @@ -121,6 +303,7 @@ HRESULT STDMETHODCALLTYPE CControlSite::GetWindow(/* [out] */ HWND __RPC_FAR *ph return S_OK; } + HRESULT STDMETHODCALLTYPE CControlSite::ContextSensitiveHelp(/* [in] */ BOOL fEnterMode) { return S_OK; @@ -135,26 +318,31 @@ HRESULT STDMETHODCALLTYPE CControlSite::SaveObject(void) return S_OK; } + HRESULT STDMETHODCALLTYPE CControlSite::GetMoniker(/* [in] */ DWORD dwAssign, /* [in] */ DWORD dwWhichMoniker, /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) { return E_NOTIMPL; } + HRESULT STDMETHODCALLTYPE CControlSite::GetContainer(/* [out] */ IOleContainer __RPC_FAR *__RPC_FAR *ppContainer) { return E_NOINTERFACE; } + HRESULT STDMETHODCALLTYPE CControlSite::ShowObject(void) { return S_OK; } + HRESULT STDMETHODCALLTYPE CControlSite::OnShowWindow(/* [in] */ BOOL fShow) { return S_OK; } + HRESULT STDMETHODCALLTYPE CControlSite::RequestNewObjectLayout(void) { return E_NOTIMPL; @@ -170,55 +358,158 @@ HRESULT STDMETHODCALLTYPE CControlSite::CanInPlaceActivate(void) return S_OK; } + HRESULT STDMETHODCALLTYPE CControlSite::OnInPlaceActivate(void) { m_bInPlaceActive = TRUE; return S_OK; } + HRESULT STDMETHODCALLTYPE CControlSite::OnUIActivate(void) { m_bUIActive = TRUE; return S_OK; } + HRESULT STDMETHODCALLTYPE CControlSite::GetWindowContext(/* [out] */ IOleInPlaceFrame __RPC_FAR *__RPC_FAR *ppFrame, /* [out] */ IOleInPlaceUIWindow __RPC_FAR *__RPC_FAR *ppDoc, /* [out] */ LPRECT lprcPosRect, /* [out] */ LPRECT lprcClipRect, /* [out][in] */ LPOLEINPLACEFRAMEINFO lpFrameInfo) { - return E_NOTIMPL; + *lprcPosRect = m_rcObjectPos; + *lprcClipRect = m_rcObjectPos; + + lpFrameInfo->fMDIApp = FALSE; + lpFrameInfo->hwndFrame = NULL; + lpFrameInfo->haccel = NULL; + lpFrameInfo->cAccelEntries = 0; + + return S_OK; } + HRESULT STDMETHODCALLTYPE CControlSite::Scroll(/* [in] */ SIZE scrollExtant) { return S_OK; } + HRESULT STDMETHODCALLTYPE CControlSite::OnUIDeactivate(/* [in] */ BOOL fUndoable) { m_bUIActive = FALSE; return S_OK; } + HRESULT STDMETHODCALLTYPE CControlSite::OnInPlaceDeactivate(void) { m_bInPlaceActive = FALSE; return S_OK; } + HRESULT STDMETHODCALLTYPE CControlSite::DiscardUndoState(void) { return S_OK; } + HRESULT STDMETHODCALLTYPE CControlSite::DeactivateAndUndo(void) { return S_OK; } + HRESULT STDMETHODCALLTYPE CControlSite::OnPosRectChange(/* [in] */ LPCRECT lprcPosRect) { return S_OK; } +/////////////////////////////////////////////////////////////////////////////// +// IOleInPlaceSiteEx implementation + +HRESULT STDMETHODCALLTYPE CControlSite::OnInPlaceActivateEx(/* [out] */ BOOL __RPC_FAR *pfNoRedraw, /* [in] */ DWORD dwFlags) +{ + // TODO check if control is windowless + return S_OK; +} + +HRESULT STDMETHODCALLTYPE CControlSite::OnInPlaceDeactivateEx(/* [in] */ BOOL fNoRedraw) +{ + return S_OK; +} + +HRESULT STDMETHODCALLTYPE CControlSite::RequestUIActivate(void) +{ + return S_FALSE; +} + + +/////////////////////////////////////////////////////////////////////////////// +// IOleInPlaceSiteWindowless implementation + +HRESULT STDMETHODCALLTYPE CControlSite::CanWindowlessActivate(void) +{ + // TODO allow windowless activation + return S_FALSE; +} + +HRESULT STDMETHODCALLTYPE CControlSite::GetCapture(void) +{ + // TODO capture the mouse for the object + return S_FALSE; +} + +HRESULT STDMETHODCALLTYPE CControlSite::SetCapture(/* [in] */ BOOL fCapture) +{ + // TODO capture the mouse for the object + return S_FALSE; +} + +HRESULT STDMETHODCALLTYPE CControlSite::GetFocus(void) +{ + return S_OK; +} + +HRESULT STDMETHODCALLTYPE CControlSite::SetFocus(/* [in] */ BOOL fFocus) +{ + return S_OK; +} + +HRESULT STDMETHODCALLTYPE CControlSite::GetDC(/* [in] */ LPCRECT pRect, /* [in] */ DWORD grfFlags, /* [out] */ HDC __RPC_FAR *phDC) +{ + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE CControlSite::ReleaseDC(/* [in] */ HDC hDC) +{ + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE CControlSite::InvalidateRect(/* [in] */ LPCRECT pRect, /* [in] */ BOOL fErase) +{ + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE CControlSite::InvalidateRgn(/* [in] */ HRGN hRGN, /* [in] */ BOOL fErase) +{ + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE CControlSite::ScrollRect(/* [in] */ INT dx, /* [in] */ INT dy, /* [in] */ LPCRECT pRectScroll, /* [in] */ LPCRECT pRectClip) +{ + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE CControlSite::AdjustRect(/* [out][in] */ LPRECT prc) +{ + return E_NOTIMPL; +} + +HRESULT STDMETHODCALLTYPE CControlSite::OnDefWindowMessage(/* [in] */ UINT msg, /* [in] */ WPARAM wParam, /* [in] */ LPARAM lParam, /* [out] */ LRESULT __RPC_FAR *plResult) +{ + return E_NOTIMPL; +} + /////////////////////////////////////////////////////////////////////////////// // IOleControlSite implementation @@ -228,32 +519,102 @@ HRESULT STDMETHODCALLTYPE CControlSite::OnControlInfoChanged(void) return S_OK; } + HRESULT STDMETHODCALLTYPE CControlSite::LockInPlaceActive(/* [in] */ BOOL fLock) { m_bInPlaceLocked = fLock; return S_OK; } + HRESULT STDMETHODCALLTYPE CControlSite::GetExtendedControl(/* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppDisp) { return E_NOTIMPL; } + HRESULT STDMETHODCALLTYPE CControlSite::TransformCoords(/* [out][in] */ POINTL __RPC_FAR *pPtlHimetric, /* [out][in] */ POINTF __RPC_FAR *pPtfContainer, /* [in] */ DWORD dwFlags) { - return E_NOTIMPL; + HRESULT hr = S_OK; + + if (pPtlHimetric == NULL) + { + return E_INVALIDARG; + } + if (pPtfContainer == NULL) + { + return E_INVALIDARG; + } + + HDC hdc = ::GetDC(m_hwndParent); + ::SetMapMode(hdc, MM_HIMETRIC); + POINT rgptConvert[2]; + rgptConvert[0].x = 0; + rgptConvert[0].y = 0; + + if (dwFlags & XFORMCOORDS_HIMETRICTOCONTAINER) + { + rgptConvert[1].x = pPtlHimetric->x; + rgptConvert[1].y = pPtlHimetric->y; + ::LPtoDP(hdc, rgptConvert, 2); + if (dwFlags & XFORMCOORDS_SIZE) + { + pPtfContainer->x = (float)(rgptConvert[1].x - rgptConvert[0].x); + pPtfContainer->y = (float)(rgptConvert[0].y - rgptConvert[1].y); + } + else if (dwFlags & XFORMCOORDS_POSITION) + { + pPtfContainer->x = (float)rgptConvert[1].x; + pPtfContainer->y = (float)rgptConvert[1].y; + } + else + { + hr = E_INVALIDARG; + } + } + else if (dwFlags & XFORMCOORDS_CONTAINERTOHIMETRIC) + { + rgptConvert[1].x = (int)(pPtfContainer->x); + rgptConvert[1].y = (int)(pPtfContainer->y); + ::DPtoLP(hdc, rgptConvert, 2); + if (dwFlags & XFORMCOORDS_SIZE) + { + pPtlHimetric->x = rgptConvert[1].x - rgptConvert[0].x; + pPtlHimetric->y = rgptConvert[0].y - rgptConvert[1].y; + } + else if (dwFlags & XFORMCOORDS_POSITION) + { + pPtlHimetric->x = rgptConvert[1].x; + pPtlHimetric->y = rgptConvert[1].y; + } + else + { + hr = E_INVALIDARG; + } + } + else + { + hr = E_INVALIDARG; + } + + ::ReleaseDC(m_hwndParent, hdc); + + return hr; } + HRESULT STDMETHODCALLTYPE CControlSite::TranslateAccelerator(/* [in] */ MSG __RPC_FAR *pMsg, /* [in] */ DWORD grfModifiers) { return E_NOTIMPL; } + HRESULT STDMETHODCALLTYPE CControlSite::OnFocus(/* [in] */ BOOL fGotFocus) { return S_OK; } + HRESULT STDMETHODCALLTYPE CControlSite::ShowPropertyFrame(void) { return E_NOTIMPL; diff --git a/mozilla/webshell/embed/ActiveX/ControlSite.h b/mozilla/webshell/embed/ActiveX/ControlSite.h index 7ea317e5b9d..9fccc8af536 100644 --- a/mozilla/webshell/embed/ActiveX/ControlSite.h +++ b/mozilla/webshell/embed/ActiveX/ControlSite.h @@ -20,8 +20,10 @@ class CControlSite : public CComObjectRootEx, public IOleClientSite, - public IOleInPlaceSite, - public IOleControlSite + public IOleInPlaceSiteWindowless, + public IOleControlSite, + public IAdviseSinkEx, + public IDispatch { // Handle to parent window HWND m_hwndParent; @@ -37,6 +39,8 @@ class CControlSite : public CComObjectRootEx, BOOL m_bUIActive; // Flag indicating if control is in-place locked and cannot be deactivated BOOL m_bInPlaceLocked; + // Flag indicating if control is windowless + BOOL m_bWindowless; // Raw pointer to the object CComPtr m_spObject; @@ -44,6 +48,22 @@ class CControlSite : public CComObjectRootEx, CComQIPtr m_spIViewObject; // Pointer to objects IOleObject interface CComQIPtr m_spIOleObject; + CComQIPtr m_spIOleInPlaceObject; + + // Ambient properties + + // Locale ID + LCID m_nAmbientLocale; + // Foreground colour + COLORREF m_clrAmbientForeColor; + // Background colour + COLORREF m_clrAmbientBackColor; + // Flag indicating if control should hatch itself + bool m_bAmbientShowHatching; + // Flag indicating if control should have grab handles + bool m_bAmbientShowGrabHandles; + // Flag indicating if control is in edit/user mode + bool m_bAmbientUserMode; public: CControlSite(); @@ -55,14 +75,42 @@ BEGIN_COM_MAP(CControlSite) COM_INTERFACE_ENTRY(IOleWindow) COM_INTERFACE_ENTRY(IOleClientSite) COM_INTERFACE_ENTRY(IOleInPlaceSite) + COM_INTERFACE_ENTRY_IID(IID_IOleInPlaceSite, IOleInPlaceSiteWindowless) +// COM_INTERFACE_ENTRY_IID(IID_IOleInPlaceSiteEx, IOleInPlaceSiteWindowless) +// COM_INTERFACE_ENTRY_IID(IID_IOleInPlaceSiteWindowless, IOleInPlaceSiteWindowless) COM_INTERFACE_ENTRY(IOleControlSite) + COM_INTERFACE_ENTRY(IDispatch) + COM_INTERFACE_ENTRY_IID(IID_IAdviseSink, IAdviseSinkEx) + COM_INTERFACE_ENTRY_IID(IID_IAdviseSink2, IAdviseSinkEx) + COM_INTERFACE_ENTRY_IID(IID_IAdviseSinkEx, IAdviseSinkEx) END_COM_MAP() - - virtual HRESULT InitNew(REFCLSID clsid); - virtual HRESULT SetObjectPos(const RECT &rcPos); + virtual HRESULT Attach(REFCLSID clsid, HWND hwndParent, const RECT &rcPos, IStream *pInitStream); + virtual HRESULT Detach(); + virtual HRESULT GetControlUnknown(IUnknown **ppObject); + virtual HRESULT SetPosition(const RECT &rcPos); + virtual HRESULT Draw(HDC hdc); virtual HRESULT DoVerb(LONG nVerb, LPMSG lpMsg = NULL); + // IDispatch + virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(/* [out] */ UINT __RPC_FAR *pctinfo); + virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(/* [in] */ UINT iTInfo, /* [in] */ LCID lcid, /* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo); + virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(/* [in] */ REFIID riid, /* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames, /* [in] */ UINT cNames, /* [in] */ LCID lcid, /* [size_is][out] */ DISPID __RPC_FAR *rgDispId); + virtual /* [local] */ HRESULT STDMETHODCALLTYPE Invoke(/* [in] */ DISPID dispIdMember, /* [in] */ REFIID riid, /* [in] */ LCID lcid, /* [in] */ WORD wFlags, /* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams, /* [out] */ VARIANT __RPC_FAR *pVarResult, /* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo, /* [out] */ UINT __RPC_FAR *puArgErr); + + // IAdviseSink implementation + virtual /* [local] */ void STDMETHODCALLTYPE OnDataChange(/* [unique][in] */ FORMATETC __RPC_FAR *pFormatetc, /* [unique][in] */ STGMEDIUM __RPC_FAR *pStgmed); + virtual /* [local] */ void STDMETHODCALLTYPE OnViewChange(/* [in] */ DWORD dwAspect, /* [in] */ LONG lindex); + virtual /* [local] */ void STDMETHODCALLTYPE OnRename(/* [in] */ IMoniker __RPC_FAR *pmk); + virtual /* [local] */ void STDMETHODCALLTYPE OnSave(void); + virtual /* [local] */ void STDMETHODCALLTYPE OnClose(void); + + // IAdviseSink2 + virtual /* [local] */ void STDMETHODCALLTYPE OnLinkSrcChange(/* [unique][in] */ IMoniker __RPC_FAR *pmk); + + // IAdviseSinkEx implementation + virtual /* [local] */ void STDMETHODCALLTYPE OnViewStatusChange(/* [in] */ DWORD dwViewStatus); + // IOleWindow implementation virtual /* [input_sync] */ HRESULT STDMETHODCALLTYPE GetWindow(/* [out] */ HWND __RPC_FAR *phwnd); virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(/* [in] */ BOOL fEnterMode); @@ -87,6 +135,25 @@ END_COM_MAP() virtual HRESULT STDMETHODCALLTYPE DeactivateAndUndo(void); virtual HRESULT STDMETHODCALLTYPE OnPosRectChange(/* [in] */ LPCRECT lprcPosRect); + // IOleInPlaceSiteEx implementation + virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivateEx(/* [out] */ BOOL __RPC_FAR *pfNoRedraw, /* [in] */ DWORD dwFlags); + virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivateEx(/* [in] */ BOOL fNoRedraw); + virtual HRESULT STDMETHODCALLTYPE RequestUIActivate(void); + + // IOleInPlaceSiteWindowless implementation + virtual HRESULT STDMETHODCALLTYPE CanWindowlessActivate(void); + virtual HRESULT STDMETHODCALLTYPE GetCapture(void); + virtual HRESULT STDMETHODCALLTYPE SetCapture(/* [in] */ BOOL fCapture); + virtual HRESULT STDMETHODCALLTYPE GetFocus(void); + virtual HRESULT STDMETHODCALLTYPE SetFocus(/* [in] */ BOOL fFocus); + virtual HRESULT STDMETHODCALLTYPE GetDC(/* [in] */ LPCRECT pRect, /* [in] */ DWORD grfFlags, /* [out] */ HDC __RPC_FAR *phDC); + virtual HRESULT STDMETHODCALLTYPE ReleaseDC(/* [in] */ HDC hDC); + virtual HRESULT STDMETHODCALLTYPE InvalidateRect(/* [in] */ LPCRECT pRect, /* [in] */ BOOL fErase); + virtual HRESULT STDMETHODCALLTYPE InvalidateRgn(/* [in] */ HRGN hRGN, /* [in] */ BOOL fErase); + virtual HRESULT STDMETHODCALLTYPE ScrollRect(/* [in] */ INT dx, /* [in] */ INT dy, /* [in] */ LPCRECT pRectScroll, /* [in] */ LPCRECT pRectClip); + virtual HRESULT STDMETHODCALLTYPE AdjustRect(/* [out][in] */ LPRECT prc); + virtual HRESULT STDMETHODCALLTYPE OnDefWindowMessage(/* [in] */ UINT msg, /* [in] */ WPARAM wParam, /* [in] */ LPARAM lParam, /* [out] */ LRESULT __RPC_FAR *plResult); + // IOleControlSite implementation virtual HRESULT STDMETHODCALLTYPE OnControlInfoChanged(void); virtual HRESULT STDMETHODCALLTYPE LockInPlaceActive(/* [in] */ BOOL fLock); @@ -97,4 +164,6 @@ END_COM_MAP() virtual HRESULT STDMETHODCALLTYPE ShowPropertyFrame( void); }; +typedef CComObject CControlSiteInstance; + #endif \ No newline at end of file