David Hedberg : shdocvw: Add IOleControlSite interface to dochost.

Alexandre Julliard julliard at winehq.org
Wed Nov 17 10:38:06 CST 2010


Module: wine
Branch: master
Commit: 42ef5a0fce16e003e9679e16771873a19c100ec3
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=42ef5a0fce16e003e9679e16771873a19c100ec3

Author: David Hedberg <dhedberg at codeweavers.com>
Date:   Wed Nov 17 13:12:20 2010 +0100

shdocvw: Add IOleControlSite interface to dochost.

---

 dlls/shdocvw/client.c  |   91 ++++++++++++++++++++++++++++++++++++++++++++++++
 dlls/shdocvw/shdocvw.h |    1 +
 2 files changed, 92 insertions(+), 0 deletions(-)

diff --git a/dlls/shdocvw/client.c b/dlls/shdocvw/client.c
index dfb6d34..bb569aa 100644
--- a/dlls/shdocvw/client.c
+++ b/dlls/shdocvw/client.c
@@ -55,6 +55,9 @@ static HRESULT WINAPI ClientSite_QueryInterface(IOleClientSite *iface, REFIID ri
     }else if(IsEqualGUID(&IID_IOleDocumentSite, riid)) {
         TRACE("(%p)->(IID_IOleDocumentSite %p)\n", This, ppv);
         *ppv = &This->IOleDocumentSite_iface;
+    }else if(IsEqualGUID(&IID_IOleControlSite, riid)) {
+        TRACE("(%p)->(IID_IOleControlSite %p)\n", This, ppv);
+        *ppv = &This->IOleControlSite_iface;
     }else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) {
         TRACE("(%p)->(IID_IOleCommandTarget %p)\n", This, ppv);
         *ppv = &This->IOleCommandTarget_iface;
@@ -356,6 +359,93 @@ static const IOleDocumentSiteVtbl OleDocumentSiteVtbl = {
     OleDocumentSite_ActivateMe
 };
 
+static inline DocHost *impl_from_IOleControlSite(IOleControlSite *iface)
+{
+    return (DocHost*)((char*)iface - FIELD_OFFSET(DocHost, IOleControlSite_iface));
+}
+
+static HRESULT WINAPI ControlSite_QueryInterface(IOleControlSite *iface, REFIID riid, void **ppv)
+{
+    DocHost *This = impl_from_IOleControlSite(iface);
+    return IOleClientSite_QueryInterface(&This->IOleClientSite_iface, riid, ppv);
+}
+
+static ULONG WINAPI ControlSite_AddRef(IOleControlSite *iface)
+{
+    DocHost *This = impl_from_IOleControlSite(iface);
+    return IOleClientSite_AddRef(&This->IOleClientSite_iface);
+}
+
+static ULONG WINAPI ControlSite_Release(IOleControlSite *iface)
+{
+    DocHost *This = impl_from_IOleControlSite(iface);
+    return IOleClientSite_Release(&This->IOleClientSite_iface);
+}
+
+static HRESULT WINAPI ControlSite_OnControlInfoChanged(IOleControlSite *iface)
+{
+    DocHost *This = impl_from_IOleControlSite(iface);
+    FIXME("(%p)\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ControlSite_LockInPlaceActive(IOleControlSite *iface, BOOL fLock)
+{
+    DocHost *This = impl_from_IOleControlSite(iface);
+    FIXME("(%p)->(%d)\n", This, fLock);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ControlSite_GetExtendedControl(IOleControlSite *iface, IDispatch **ppDisp)
+{
+    DocHost *This = impl_from_IOleControlSite(iface);
+    FIXME("(%p)->(%p)\n", This, ppDisp);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ControlSite_TransformCoords(IOleControlSite *iface, POINTL *pPtlHimetric,
+                                                  POINTF *pPtfContainer, DWORD dwFlags)
+{
+    DocHost *This = impl_from_IOleControlSite(iface);
+    FIXME("(%p)->(%p, %p, %08x)\n", This, pPtlHimetric, pPtfContainer, dwFlags);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ControlSite_TranslateAccelerator(IOleControlSite *iface, MSG *pMsg,
+                                                       DWORD grfModifiers)
+{
+    DocHost *This = impl_from_IOleControlSite(iface);
+    FIXME("(%p)->(%p, %08x)\n", This, pMsg, grfModifiers);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ControlSite_OnFocus(IOleControlSite *iface, BOOL fGotFocus)
+{
+    DocHost *This = impl_from_IOleControlSite(iface);
+    FIXME("(%p)->(%d)\n", This, fGotFocus);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ControlSite_ShowPropertyFrame(IOleControlSite *iface)
+{
+    DocHost *This = impl_from_IOleControlSite(iface);
+    FIXME("(%p)\n", This);
+    return E_NOTIMPL;
+}
+
+static IOleControlSiteVtbl OleControlSiteVtbl = {
+    ControlSite_QueryInterface,
+    ControlSite_AddRef,
+    ControlSite_Release,
+    ControlSite_OnControlInfoChanged,
+    ControlSite_LockInPlaceActive,
+    ControlSite_GetExtendedControl,
+    ControlSite_TransformCoords,
+    ControlSite_TranslateAccelerator,
+    ControlSite_OnFocus,
+    ControlSite_ShowPropertyFrame
+};
+
 static inline DocHost *impl_from_IDispatch(IDispatch *iface)
 {
     return (DocHost*)((char*)iface - FIELD_OFFSET(DocHost, IDispatch_iface));
@@ -521,6 +611,7 @@ void DocHost_ClientSite_Init(DocHost *This)
     This->IOleClientSite_iface.lpVtbl   = &OleClientSiteVtbl;
     This->IOleInPlaceSite_iface.lpVtbl  = &OleInPlaceSiteVtbl;
     This->IOleDocumentSite_iface.lpVtbl = &OleDocumentSiteVtbl;
+    This->IOleControlSite_iface.lpVtbl  = &OleControlSiteVtbl;
     This->IDispatch_iface.lpVtbl        = &DispatchVtbl;
     This->IServiceProvider_iface.lpVtbl = &ServiceProviderVtbl;
 }
diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h
index bd6152d..6df8527 100644
--- a/dlls/shdocvw/shdocvw.h
+++ b/dlls/shdocvw/shdocvw.h
@@ -97,6 +97,7 @@ struct DocHost {
     IOleInPlaceSite     IOleInPlaceSite_iface;
     IDocHostUIHandler2  IDocHostUIHandler2_iface;
     IOleDocumentSite    IOleDocumentSite_iface;
+    IOleControlSite     IOleControlSite_iface;
     IOleCommandTarget   IOleCommandTarget_iface;
     IDispatch           IDispatch_iface;
     IPropertyNotifySink IPropertyNotifySink_iface;




More information about the wine-cvs mailing list