[PATCH 2/4] shdocvw: Add IOleControlSite interface to dochost.
David Hedberg
dhedberg at codeweavers.com
Fri Nov 12 01:50:00 CST 2010
---
dlls/shdocvw/client.c | 90 ++++++++++++++++++++++++++++++++++++++++++++++++
dlls/shdocvw/shdocvw.h | 2 +
2 files changed, 92 insertions(+), 0 deletions(-)
diff --git a/dlls/shdocvw/client.c b/dlls/shdocvw/client.c
index 17fa35f..b693122 100644
--- a/dlls/shdocvw/client.c
+++ b/dlls/shdocvw/client.c
@@ -54,6 +54,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 = DOCSITE(This);
+ }else if(IsEqualGUID(&IID_IOleControlSite, riid)) {
+ TRACE("(%p)->(IID_IOleControlSite %p)\n", This, ppv);
+ *ppv = CONTROLSITE(This);
}else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) {
TRACE("(%p)->(IID_IOleCommandTarget %p)\n", This, ppv);
*ppv = OLECMD(This);
@@ -357,6 +360,92 @@ static const IOleDocumentSiteVtbl OleDocumentSiteVtbl = {
OleDocumentSite_ActivateMe
};
+#define CONTROLSITE_THIS(iface) DEFINE_THIS(DocHost, OleControlSite, iface)
+
+static HRESULT WINAPI ControlSite_QueryInterface(IOleControlSite *iface, REFIID riid, void **ppv)
+{
+ DocHost *This = CONTROLSITE_THIS(iface);
+ return IOleClientSite_QueryInterface(CLIENTSITE(This), riid, ppv);
+}
+
+static ULONG WINAPI ControlSite_AddRef(IOleControlSite *iface)
+{
+ DocHost *This = CONTROLSITE_THIS(iface);
+ return IOleClientSite_AddRef(CLIENTSITE(This));
+}
+
+static ULONG WINAPI ControlSite_Release(IOleControlSite *iface)
+{
+ DocHost *This = CONTROLSITE_THIS(iface);
+ return IOleClientSite_Release(CLIENTSITE(This));
+}
+
+static HRESULT WINAPI ControlSite_OnControlInfoChanged(IOleControlSite *iface)
+{
+ DocHost *This = CONTROLSITE_THIS(iface);
+ FIXME("(%p)\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ControlSite_LockInPlaceActive(IOleControlSite *iface, BOOL fLock)
+{
+ DocHost *This = CONTROLSITE_THIS(iface);
+ FIXME("(%p)->(%d)\n", This, fLock);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ControlSite_GetExtendedControl(IOleControlSite *iface, IDispatch **ppDisp)
+{
+ DocHost *This = CONTROLSITE_THIS(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 = CONTROLSITE_THIS(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 = CONTROLSITE_THIS(iface);
+ FIXME("(%p)->(%p, %08x)\n", This, pMsg, grfModifiers);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ControlSite_OnFocus(IOleControlSite *iface, BOOL fGotFocus)
+{
+ DocHost *This = CONTROLSITE_THIS(iface);
+ FIXME("(%p)->(%d)\n", This, fGotFocus);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ControlSite_ShowPropertyFrame(IOleControlSite *iface)
+{
+ DocHost *This = CONTROLSITE_THIS(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
+};
+
+#undef CONTROLSITE_THIS
+
#define DISP_THIS(iface) DEFINE_THIS(DocHost, Dispatch, iface)
static HRESULT WINAPI ClDispatch_QueryInterface(IDispatch *iface, REFIID riid, void **ppv)
@@ -520,6 +609,7 @@ void DocHost_ClientSite_Init(DocHost *This)
This->lpOleClientSiteVtbl = &OleClientSiteVtbl;
This->lpOleInPlaceSiteVtbl = &OleInPlaceSiteVtbl;
This->lpOleDocumentSiteVtbl = &OleDocumentSiteVtbl;
+ This->lpOleControlSiteVtbl = &OleControlSiteVtbl;
This->lpDispatchVtbl = &DispatchVtbl;
This->lpServiceProviderVtbl = &ServiceProviderVtbl;
diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h
index 4f3425d..b44093e 100644
--- a/dlls/shdocvw/shdocvw.h
+++ b/dlls/shdocvw/shdocvw.h
@@ -96,6 +96,7 @@ struct DocHost {
const IOleInPlaceSiteVtbl *lpOleInPlaceSiteVtbl;
const IDocHostUIHandler2Vtbl *lpDocHostUIHandlerVtbl;
const IOleDocumentSiteVtbl *lpOleDocumentSiteVtbl;
+ const IOleControlSiteVtbl *lpOleControlSiteVtbl;
const IOleCommandTargetVtbl *lpOleCommandTargetVtbl;
const IDispatchVtbl *lpDispatchVtbl;
const IPropertyNotifySinkVtbl *lpIPropertyNotifySinkVtbl;
@@ -216,6 +217,7 @@ struct InternetExplorer {
#define DOCHOSTUI(x) ((IDocHostUIHandler*) &(x)->lpDocHostUIHandlerVtbl)
#define DOCHOSTUI2(x) ((IDocHostUIHandler2*) &(x)->lpDocHostUIHandlerVtbl)
#define DOCSITE(x) ((IOleDocumentSite*) &(x)->lpOleDocumentSiteVtbl)
+#define CONTROLSITE(x) ((IOleControlSite*) &(x)->lpOleControlSiteVtbl)
#define CLDISP(x) ((IDispatch*) &(x)->lpDispatchVtbl)
#define PROPNOTIF(x) ((IPropertyNotifySink*) &(x)->lpIPropertyNotifySinkVtbl)
#define SERVPROV(x) ((IServiceProvider*) &(x)->lpServiceProviderVtbl)
--
1.7.3.2
More information about the wine-patches
mailing list