SHDOCVW: Added IViewObject2 stub implementation

Jacek Caban jack at itma.pwr.wroc.pl
Fri Nov 11 06:34:22 CST 2005


Changelog:
    Added IViewObject2 stub implementation
-------------- next part --------------
Index: dlls/shdocvw/Makefile.in
===================================================================
RCS file: /home/wine/wine/dlls/shdocvw/Makefile.in,v
retrieving revision 1.17
diff -u -p -r1.17 Makefile.in
--- dlls/shdocvw/Makefile.in	8 Nov 2005 16:12:06 -0000	1.17
+++ dlls/shdocvw/Makefile.in	11 Nov 2005 12:34:16 -0000
@@ -19,6 +19,7 @@ C_SRCS = \
 	regsvr.c \
 	shdocvw_main.c \
 	shlinstobj.c \
+	view.c \
 	webbrowser.c
 
 RC_SRCS = shdocvw.rc
Index: dlls/shdocvw/shdocvw.h
===================================================================
RCS file: /home/wine/wine/dlls/shdocvw/shdocvw.h,v
retrieving revision 1.24
diff -u -p -r1.24 shdocvw.h
--- dlls/shdocvw/shdocvw.h	8 Nov 2005 16:12:06 -0000	1.24
+++ dlls/shdocvw/shdocvw.h	11 Nov 2005 12:34:16 -0000
@@ -67,6 +67,7 @@ typedef struct {
     const IProvideClassInfo2Vtbl        *lpProvideClassInfoVtbl;
     const IQuickActivateVtbl            *lpQuickActivateVtbl;
     const IConnectionPointContainerVtbl *lpConnectionPointContainerVtbl;
+    const IViewObject2Vtbl              *lpViewObjectVtbl;
 
     LONG ref;
 
@@ -83,8 +84,11 @@ typedef struct {
 #define CLASSINFO(x)    ((IProvideClassInfo2*)          &(x)->lpProvideClassInfoVtbl)
 #define QUICKACT(x)     ((IQuickActivate*)              &(x)->lpQuickActivateVtbl)
 #define CONPTCONT(x)    ((IConnectionPointContainer*)   &(x)->lpConnectionPointContainerVtbl)
+#define VIEWOBJ(x)      ((IViewObject*)                 &(x)->lpViewObjectVtbl);
+#define VIEWOBJ2(x)     ((IViewObject2*)                &(x)->lpViewObjectVtbl);
 
 void WebBrowser_OleObject_Init(WebBrowser*);
+void WebBrowser_ViewObject_Init(WebBrowser*);
 void WebBrowser_Persist_Init(WebBrowser*);
 void WebBrowser_ClassInfo_Init(WebBrowser*);
 void WebBrowser_Misc_Init(WebBrowser*);
Index: dlls/shdocvw/webbrowser.c
===================================================================
RCS file: /home/wine/wine/dlls/shdocvw/webbrowser.c,v
retrieving revision 1.20
diff -u -p -r1.20 webbrowser.c
--- dlls/shdocvw/webbrowser.c	12 Sep 2005 21:17:57 -0000	1.20
+++ dlls/shdocvw/webbrowser.c	11 Nov 2005 12:34:17 -0000
@@ -41,7 +41,7 @@ static HRESULT WINAPI WebBrowser_QueryIn
     if(IsEqualGUID(&IID_IUnknown, riid)) {
         TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
         *ppv = WEBBROWSER(This);
-    }else if(IsEqualGUID (&IID_IDispatch, riid)) {
+    }else if(IsEqualGUID(&IID_IDispatch, riid)) {
         TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
         *ppv = WEBBROWSER(This);
     }else if(IsEqualGUID(&IID_IWebBrowser, riid)) {
@@ -74,18 +74,24 @@ static HRESULT WINAPI WebBrowser_QueryIn
     }else if(IsEqualGUID (&IID_IPersistStreamInit, riid)) {
         TRACE("(%p)->(IID_IPersistStreamInit %p)\n", This, ppv);
         *ppv = PERSTRINIT(This);
-    }else if(IsEqualGUID (&IID_IProvideClassInfo, riid)) {
+    }else if(IsEqualGUID(&IID_IProvideClassInfo, riid)) {
         TRACE("(%p)->(IID_IProvideClassInfo %p)\n", This, ppv);
         *ppv = CLASSINFO(This);
-    }else if(IsEqualGUID (&IID_IProvideClassInfo2, riid)) {
+    }else if(IsEqualGUID(&IID_IProvideClassInfo2, riid)) {
         TRACE("(%p)->(IID_IProvideClassInfo2 %p)\n", This, ppv);
         *ppv = CLASSINFO(This);
-    }else if(IsEqualGUID (&IID_IQuickActivate, riid)) {
+    }else if(IsEqualGUID(&IID_IQuickActivate, riid)) {
         TRACE("(%p)->(IID_IQuickActivate %p)\n", This, ppv);
         *ppv = QUICKACT(This);
-    }else if(IsEqualGUID (&IID_IConnectionPointContainer, riid)) {
+    }else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) {
         TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv);
         *ppv = CONPTCONT(This);
+    }else if(IsEqualGUID(&IID_IViewObject, riid)) {
+        TRACE("(%p)->(IID_IViewObject %p)\n", This, ppv);
+        *ppv = VIEWOBJ(This);
+    }else if(IsEqualGUID(&IID_IViewObject2, riid)) {
+        TRACE("(%p)->(IID_IViewObject2 %p)\n", This, ppv);
+        *ppv = VIEWOBJ2(This);
     }
 
     if(*ppv) {
@@ -706,6 +712,7 @@ HRESULT WebBrowser_Create(IUnknown *pOut
     ret->ref = 0;
 
     WebBrowser_OleObject_Init(ret);
+    WebBrowser_ViewObject_Init(ret);
     WebBrowser_Persist_Init(ret);
     WebBrowser_ClassInfo_Init(ret);
     WebBrowser_Misc_Init(ret);
--- /dev/null	2005-11-11 09:24:01.468529250 +0100
+++ dlls/shdocvw/view.c	2005-11-11 13:29:11.000000000 +0100
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2005 Jacek Caban
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "wine/debug.h"
+#include "shdocvw.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
+
+#define VIEWOBJ_THIS(iface) DEFINE_THIS(WebBrowser, ViewObject, iface)
+
+static HRESULT WINAPI ViewObject_QueryInterface(IViewObject2 *iface, REFIID riid, void **ppv)
+{
+    WebBrowser *This = VIEWOBJ_THIS(iface);
+    return IWebBrowser2_QueryInterface(WEBBROWSER(This), riid, ppv);
+}
+
+static ULONG WINAPI ViewObject_AddRef(IViewObject2 *iface)
+{
+    WebBrowser *This = VIEWOBJ_THIS(iface);
+    return IWebBrowser2_AddRef(WEBBROWSER(This));
+}
+
+static ULONG WINAPI ViewObject_Release(IViewObject2 *iface)
+{
+    WebBrowser *This = VIEWOBJ_THIS(iface);
+    return IWebBrowser2_Release(WEBBROWSER(This));
+}
+
+static HRESULT WINAPI ViewObject_Draw(IViewObject2 *iface, DWORD dwDrawAspect,
+        LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hdcTargetDev,
+        HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds,
+        BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR),
+        ULONG_PTR dwContinue)
+{
+    WebBrowser *This = VIEWOBJ_THIS(iface);
+    FIXME("(%p)->(%ld %ld %p %p %p %p %p %p %p %08lx)\n", This, dwDrawAspect, lindex,
+            pvAspect, ptd, hdcTargetDev, hdcDraw, lprcBounds, lprcWBounds, pfnContinue,
+            dwContinue);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ViewObject_GetColorSet(IViewObject2 *iface, DWORD dwAspect,
+        LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hicTargetDev,
+        LOGPALETTE **ppColorSet)
+{
+    WebBrowser *This = VIEWOBJ_THIS(iface);
+    FIXME("(%p)->(%ld %ld %p %p %p %p)\n", This, dwAspect, lindex, pvAspect, ptd,
+            hicTargetDev, ppColorSet);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ViewObject_Freeze(IViewObject2 *iface, DWORD dwDrawAspect, LONG lindex,
+                                        void *pvAspect, DWORD *pdwFreeze)
+{
+    WebBrowser *This = VIEWOBJ_THIS(iface);
+    FIXME("(%p)->(%ld %ld %p %p)\n", This, dwDrawAspect, lindex, pvAspect, pdwFreeze);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ViewObject_Unfreeze(IViewObject2 *iface, DWORD dwFreeze)
+{
+    WebBrowser *This = VIEWOBJ_THIS(iface);
+    FIXME("(%p)->(%ld)\n", This, dwFreeze);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ViewObject_SetAdvise(IViewObject2 *iface, DWORD aspects, DWORD advf,
+        IAdviseSink *pAdvSink)
+{
+    WebBrowser *This = VIEWOBJ_THIS(iface);
+    FIXME("(%p)->(%ld %08lx %p)\n", This, aspects, advf, pAdvSink);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ViewObject_GetAdvise(IViewObject2 *iface, DWORD *pAspects,
+        DWORD *pAdvf, IAdviseSink **ppAdvSink)
+{
+    WebBrowser *This = VIEWOBJ_THIS(iface);
+    FIXME("(%p)->(%p %p %p)\n", This, pAspects, pAdvf, ppAdvSink);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ViewObject_GetExtent(IViewObject2 *iface, DWORD dwAspect, LONG lindex,
+        DVTARGETDEVICE *ptd, LPSIZEL lpsizel)
+{
+    WebBrowser *This = VIEWOBJ_THIS(iface);
+    FIXME("(%p)->(%ld %ld %p %p)\n", This, dwAspect, lindex, ptd, lpsizel);
+    return E_NOTIMPL;
+}
+
+static const IViewObject2Vtbl ViewObjectVtbl = {
+    ViewObject_QueryInterface,
+    ViewObject_AddRef,
+    ViewObject_Release,
+    ViewObject_Draw,
+    ViewObject_GetColorSet,
+    ViewObject_Freeze,
+    ViewObject_Unfreeze,
+    ViewObject_SetAdvise,
+    ViewObject_GetAdvise,
+    ViewObject_GetExtent
+};
+
+#undef VIEWOBJ_THIS
+
+void WebBrowser_ViewObject_Init(WebBrowser *This)
+{
+    This->lpViewObjectVtbl = &ViewObjectVtbl;
+}


More information about the wine-patches mailing list