Ilya Shpigor : shdocvw: Added IDataObject stub implementation.

Alexandre Julliard julliard at winehq.org
Wed May 19 10:34:15 CDT 2010


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

Author: Ilya Shpigor <shpigor at etersoft.ru>
Date:   Tue May 18 17:17:29 2010 +0400

shdocvw: Added IDataObject stub implementation.

---

 dlls/shdocvw/shdocvw.h    |    3 +
 dlls/shdocvw/view.c       |  114 +++++++++++++++++++++++++++++++++++++++++++++
 dlls/shdocvw/webbrowser.c |    4 ++
 3 files changed, 121 insertions(+), 0 deletions(-)

diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h
index 1184298..2dce575 100644
--- a/dlls/shdocvw/shdocvw.h
+++ b/dlls/shdocvw/shdocvw.h
@@ -127,6 +127,7 @@ struct WebBrowser {
     const IOleCommandTargetVtbl         *lpOleCommandTargetVtbl;
     const IHlinkFrameVtbl               *lpHlinkFrameVtbl;
     const IServiceProviderVtbl          *lpServiceProviderVtbl;
+    const IDataObjectVtbl               *lpDataObjectVtbl;
 
     LONG ref;
 
@@ -184,6 +185,7 @@ struct InternetExplorer {
 #define ACTIVEOBJ(x)    ((IOleInPlaceActiveObject*)     &(x)->lpOleInPlaceActiveObjectVtbl)
 #define OLECMD(x)       ((IOleCommandTarget*)           &(x)->lpOleCommandTargetVtbl)
 #define HLINKFRAME(x)   ((IHlinkFrame*)                 &(x)->lpHlinkFrameVtbl)
+#define DATAOBJECT(x)   ((IDataObject*)                 &(x)->lpDataObjectVtbl)
 
 #define CLIENTSITE(x)   ((IOleClientSite*)              &(x)->lpOleClientSiteVtbl)
 #define INPLACESITE(x)  ((IOleInPlaceSite*)             &(x)->lpOleInPlaceSiteVtbl)
@@ -198,6 +200,7 @@ struct InternetExplorer {
 
 void WebBrowser_OleObject_Init(WebBrowser*);
 void WebBrowser_ViewObject_Init(WebBrowser*);
+void WebBrowser_DataObject_Init(WebBrowser*);
 void WebBrowser_Persist_Init(WebBrowser*);
 void WebBrowser_ClassInfo_Init(WebBrowser*);
 void WebBrowser_HlinkFrame_Init(WebBrowser*);
diff --git a/dlls/shdocvw/view.c b/dlls/shdocvw/view.c
index d2e5857..9ee7c06 100644
--- a/dlls/shdocvw/view.c
+++ b/dlls/shdocvw/view.c
@@ -1,5 +1,6 @@
 /*
  * Copyright 2005 Jacek Caban
+ * Copyright 2010 Ilya Shpigor
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -21,6 +22,10 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
 
+/**********************************************************************
+ * Implement the IViewObject interface
+ */
+
 #define VIEWOBJ_THIS(iface) DEFINE_THIS(WebBrowser, ViewObject, iface)
 
 static HRESULT WINAPI ViewObject_QueryInterface(IViewObject2 *iface, REFIID riid, void **ppv)
@@ -122,3 +127,112 @@ void WebBrowser_ViewObject_Init(WebBrowser *This)
 {
     This->lpViewObjectVtbl = &ViewObjectVtbl;
 }
+
+/**********************************************************************
+ * Implement the IDataObject interface
+ */
+
+#define DATAOBJ_THIS(iface) DEFINE_THIS(WebBrowser, DataObject, iface)
+
+static HRESULT WINAPI DataObject_QueryInterface(LPDATAOBJECT iface, REFIID riid, LPVOID * ppvObj)
+{
+    WebBrowser *This = DATAOBJ_THIS(iface);
+    return IWebBrowser2_QueryInterface(WEBBROWSER(This), riid, ppvObj);
+}
+
+static ULONG WINAPI DataObject_AddRef(LPDATAOBJECT iface)
+{
+    WebBrowser *This = DATAOBJ_THIS(iface);
+    return IWebBrowser2_AddRef(WEBBROWSER(This));
+}
+
+static ULONG WINAPI DataObject_Release(LPDATAOBJECT iface)
+{
+    WebBrowser *This = DATAOBJ_THIS(iface);
+    return IWebBrowser2_Release(WEBBROWSER(This));
+}
+
+static HRESULT WINAPI DataObject_GetData(LPDATAOBJECT iface, LPFORMATETC pformatetcIn, STGMEDIUM *pmedium)
+{
+    WebBrowser *This = DATAOBJ_THIS(iface);
+    FIXME("(%p)->()\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DataObject_GetDataHere(LPDATAOBJECT iface, LPFORMATETC pformatetc, STGMEDIUM *pmedium)
+{
+    WebBrowser *This = DATAOBJ_THIS(iface);
+    FIXME("(%p)->()\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DataObject_QueryGetData(LPDATAOBJECT iface, LPFORMATETC pformatetc)
+{
+    WebBrowser *This = DATAOBJ_THIS(iface);
+    FIXME("(%p)->()\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DataObject_GetCanonicalFormatEtc(LPDATAOBJECT iface, LPFORMATETC pformatectIn, LPFORMATETC pformatetcOut)
+{
+    WebBrowser *This = DATAOBJ_THIS(iface);
+    FIXME("(%p)->()\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DataObject_SetData(LPDATAOBJECT iface, LPFORMATETC pformatetc, STGMEDIUM *pmedium, BOOL fRelease)
+{
+    WebBrowser *This = DATAOBJ_THIS(iface);
+    FIXME("(%p)->()\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DataObject_EnumFormatEtc(LPDATAOBJECT iface, DWORD dwDirection, IEnumFORMATETC **ppenumFormatEtc)
+{
+    WebBrowser *This = DATAOBJ_THIS(iface);
+    FIXME("(%p)->()\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DataObject_DAdvise(LPDATAOBJECT iface, FORMATETC *pformatetc, DWORD advf, IAdviseSink *pAdvSink, DWORD *pdwConnection)
+{
+    WebBrowser *This = DATAOBJ_THIS(iface);
+    FIXME("(%p)->()\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DataObject_DUnadvise(LPDATAOBJECT iface, DWORD dwConnection)
+{
+    WebBrowser *This = DATAOBJ_THIS(iface);
+    FIXME("(%p)->()\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI DataObject_EnumDAdvise(LPDATAOBJECT iface, IEnumSTATDATA **ppenumAdvise)
+{
+    WebBrowser *This = DATAOBJ_THIS(iface);
+    FIXME("(%p)->()\n", This);
+    return E_NOTIMPL;
+}
+
+static const IDataObjectVtbl DataObjectVtbl = {
+    DataObject_QueryInterface,
+    DataObject_AddRef,
+    DataObject_Release,
+    DataObject_GetData,
+    DataObject_GetDataHere,
+    DataObject_QueryGetData,
+    DataObject_GetCanonicalFormatEtc,
+    DataObject_SetData,
+    DataObject_EnumFormatEtc,
+    DataObject_DAdvise,
+    DataObject_DUnadvise,
+    DataObject_EnumDAdvise
+};
+
+#undef DATAOBJ_THIS
+
+void WebBrowser_DataObject_Init(WebBrowser *This)
+{
+    This->lpDataObjectVtbl = &DataObjectVtbl;
+}
diff --git a/dlls/shdocvw/webbrowser.c b/dlls/shdocvw/webbrowser.c
index 2ac9b99..b2fce6a 100644
--- a/dlls/shdocvw/webbrowser.c
+++ b/dlls/shdocvw/webbrowser.c
@@ -105,6 +105,9 @@ static HRESULT WINAPI WebBrowser_QueryInterface(IWebBrowser2 *iface, REFIID riid
     }else if(IsEqualGUID(&IID_IServiceProvider, riid)) {
         *ppv = SERVPROV(This);
         TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv);
+    }else if(IsEqualGUID(&IID_IDataObject, riid)) {
+        *ppv = DATAOBJECT(This);
+        TRACE("(%p)->(IID_IDataObject %p)\n", This, ppv);
     }else if(IsEqualGUID(&IID_IQuickActivate, riid)) {
         TRACE("(%p)->(IID_IQuickActivate %p) returning NULL\n", This, ppv);
         return E_NOINTERFACE;
@@ -1132,6 +1135,7 @@ static HRESULT WebBrowser_Create(INT version, IUnknown *pOuter, REFIID riid, voi
 
     WebBrowser_OleObject_Init(ret);
     WebBrowser_ViewObject_Init(ret);
+    WebBrowser_DataObject_Init(ret);
     WebBrowser_Persist_Init(ret);
     WebBrowser_ClassInfo_Init(ret);
     WebBrowser_HlinkFrame_Init(ret);




More information about the wine-cvs mailing list