MSHTML: Added stub implementation of IOleInPlaceObjectWindowless

Jacek Caban jack at itma.pwr.wroc.pl
Mon Jun 27 14:02:02 CDT 2005


I know I send much stubs...

Changelog:
    Added stub implementation of IOleInPlaceObjectWindowless
-------------- next part --------------
Index: dlls/mshtml/Makefile.in
===================================================================
RCS file: /home/wine/wine/dlls/mshtml/Makefile.in,v
retrieving revision 1.14
diff -u -p -r1.14 Makefile.in
--- dlls/mshtml/Makefile.in	27 Jun 2005 11:19:49 -0000	1.14
+++ dlls/mshtml/Makefile.in	27 Jun 2005 18:56:36 -0000
@@ -12,6 +12,7 @@ C_SRCS = \
 	htmldoc.c \
 	main.c \
 	oleobj.c \
+	olewnd.c \
 	persist.c \
 	protocol.c \
 	view.c
Index: dlls/mshtml/htmldoc.c
===================================================================
RCS file: /home/wine/wine/dlls/mshtml/htmldoc.c,v
retrieving revision 1.8
diff -u -p -r1.8 htmldoc.c
--- dlls/mshtml/htmldoc.c	23 Jun 2005 16:44:43 -0000	1.8
+++ dlls/mshtml/htmldoc.c	27 Jun 2005 18:56:36 -0000
@@ -85,6 +85,15 @@ static HRESULT WINAPI HTMLDocument_Query
     }else if(IsEqualGUID(&IID_IViewObject2, riid)) {
         TRACE("(%p)->(IID_IViewObject2, %p)\n", This, ppvObject);
         *ppvObject = VIEWOBJ2(This);
+    }else if(IsEqualGUID(&IID_IOleWindow, riid)) {
+        TRACE("(%p)->(IID_IOleWindow, %p)\n", This, ppvObject);
+        *ppvObject = OLEWIN(This);
+    }else if(IsEqualGUID(&IID_IOleInPlaceObject, riid)) {
+        TRACE("(%p)->(IID_IOleInPlaceObject, %p)\n", This, ppvObject);
+        *ppvObject = INPLACEOBJ(This);
+    }else if(IsEqualGUID(&IID_IOleInPlaceObjectWindowless, riid)) {
+        TRACE("(%p)->(IID_IOleInPlaceObjectWindowless, %p)\n", This, ppvObject);
+        *ppvObject = INPLACEWIN(This);
     }
 
     if(*ppvObject) {
@@ -959,6 +968,7 @@ HRESULT HTMLDocument_Create(IUnknown *pU
     HTMLDocument_Persist_Init(ret);
     HTMLDocument_OleObj_Init(ret);
     HTMLDocument_View_Init(ret);
+    HTMLDocument_Window_Init(ret);
 
     return hres;
 }
Index: dlls/mshtml/mshtml_private.h
===================================================================
RCS file: /home/wine/wine/dlls/mshtml/mshtml_private.h,v
retrieving revision 1.9
diff -u -p -r1.9 mshtml_private.h
--- dlls/mshtml/mshtml_private.h	27 Jun 2005 09:50:56 -0000	1.9
+++ dlls/mshtml/mshtml_private.h	27 Jun 2005 18:56:36 -0000
@@ -17,15 +17,16 @@
  */
 
 typedef struct {
-    const IHTMLDocument2Vtbl          *lpHTMLDocument2Vtbl;
-    const IPersistMonikerVtbl         *lpPersistMonikerVtbl;
-    const IPersistFileVtbl            *lpPersistFileVtbl;
-    const IMonikerPropVtbl            *lpMonikerPropVtbl;
-    const IOleObjectVtbl              *lpOleObjectVtbl;
-    const IOleDocumentVtbl            *lpOleDocumentVtbl;
-    const IOleDocumentViewVtbl        *lpOleDocumentViewVtbl;
-    const IOleInPlaceActiveObjectVtbl *lpOleInPlaceActiveObjectVtbl;
-    const IViewObject2Vtbl            *lpViewObject2Vtbl;
+    const IHTMLDocument2Vtbl              *lpHTMLDocument2Vtbl;
+    const IPersistMonikerVtbl             *lpPersistMonikerVtbl;
+    const IPersistFileVtbl                *lpPersistFileVtbl;
+    const IMonikerPropVtbl                *lpMonikerPropVtbl;
+    const IOleObjectVtbl                  *lpOleObjectVtbl;
+    const IOleDocumentVtbl                *lpOleDocumentVtbl;
+    const IOleDocumentViewVtbl            *lpOleDocumentViewVtbl;
+    const IOleInPlaceActiveObjectVtbl     *lpOleInPlaceActiveObjectVtbl;
+    const IViewObject2Vtbl                *lpViewObject2Vtbl;
+    const IOleInPlaceObjectWindowlessVtbl *lpOleInPlaceObjectWindowlessVtbl;
 
     ULONG ref;
 
@@ -36,23 +37,29 @@ typedef struct {
     HWND hwnd;
 } HTMLDocument;
 
-#define HTMLDOC(x)       ((IHTMLDocument2*)          &(x)->lpHTMLDocument2Vtbl)
-#define PERSIST(x)       ((IPersist*)                &(x)->lpPersistFileVtbl)
-#define PERSISTMON(x)    ((IPersistMoniker*)         &(x)->lpPersistMonikerVtbl)
-#define PERSISTFILE(x)   ((IPersistFile*)            &(x)->lpPersistFileVtbl)
-#define MONPROP(x)       ((IMonikerProp*)            &(x)->lpMonikerPropVtbl)
-#define OLEOBJ(x)        ((IOleObject*)              &(x)->lpOleObjectVtbl)
-#define OLEDOC(x)        ((IOleDocument*)            &(x)->lpOleDocumentVtbl)
-#define DOCVIEW(x)       ((IOleDocumentView*)        &(x)->lpOleDocumentViewVtbl)
-#define ACTOBJ(x)        ((IOleInPlaceActiveObject*) &(x)->lpOleInPlaceActiveObjectVtbl)
-#define VIEWOBJ(x)       ((IViewObject*)             &(x)->lpViewObject2Vtbl)
-#define VIEWOBJ2(x)      ((IViewObject2*)            &(x)->lpViewObject2Vtbl)
+#define HTMLDOC(x)       ((IHTMLDocument2*)               &(x)->lpHTMLDocument2Vtbl)
+#define PERSIST(x)       ((IPersist*)                     &(x)->lpPersistFileVtbl)
+#define PERSISTMON(x)    ((IPersistMoniker*)              &(x)->lpPersistMonikerVtbl)
+#define PERSISTFILE(x)   ((IPersistFile*)                 &(x)->lpPersistFileVtbl)
+#define MONPROP(x)       ((IMonikerProp*)                 &(x)->lpMonikerPropVtbl)
+#define OLEOBJ(x)        ((IOleObject*)                   &(x)->lpOleObjectVtbl)
+#define OLEDOC(x)        ((IOleDocument*)                 &(x)->lpOleDocumentVtbl)
+#define DOCVIEW(x)       ((IOleDocumentView*)             &(x)->lpOleDocumentViewVtbl)
+#define OLEWIN(x)        ((IOleWindow*)                   &(x)->lpOleInPlaceActiveObjectVtbl)
+#define ACTOBJ(x)        ((IOleInPlaceActiveObject*)      &(x)->lpOleInPlaceActiveObjectVtbl)
+#define VIEWOBJ(x)       ((IViewObject*)                  &(x)->lpViewObject2Vtbl)
+#define VIEWOBJ2(x)      ((IViewObject2*)                 &(x)->lpViewObject2Vtbl)
+#define INPLACEOBJ(x)    ((IOleInPlaceObject*)            &(x)->lpOleInPlaceObjectWindowlessVtbl)
+#define INPLACEWIN(x)    ((IOleInPlaceObjectWindowless*)  &(x)->lpOleInPlaceObjectWindowlessVtbl)
+
+#define DEFINE_THIS(cls,ifc) cls* const This=(cls*)((char*)(iface)-offsetof(cls,lp ## ifc ## Vtbl));
 
 HRESULT HTMLDocument_Create(IUnknown*,REFIID,void**);
 
 void HTMLDocument_Persist_Init(HTMLDocument*);
 void HTMLDocument_OleObj_Init(HTMLDocument*);
 void HTMLDocument_View_Init(HTMLDocument*);
+void HTMLDocument_Window_Init(HTMLDocument*);
 
 HRESULT ProtocolFactory_Create(REFCLSID,REFIID,void**);
 
Index: dlls/mshtml/oleobj.c
===================================================================
RCS file: /home/wine/wine/dlls/mshtml/oleobj.c,v
retrieving revision 1.5
diff -u -p -r1.5 oleobj.c
--- dlls/mshtml/oleobj.c	1 Jun 2005 19:57:42 -0000	1.5
+++ dlls/mshtml/oleobj.c	27 Jun 2005 18:56:36 -0000
@@ -374,104 +374,10 @@ static const IOleDocumentVtbl OleDocumen
     OleDocument_EnumViews
 };
 
-/**********************************************************
- * IOleInPlaceActiveObject implementation
- */
-
-#define ACTOBJ_THIS \
-    HTMLDocument* const This=(HTMLDocument*)((char*)(iface)-offsetof(HTMLDocument,lpOleInPlaceActiveObjectVtbl));
-
-static HRESULT WINAPI OleInPlaceActiveObject_QueryInterface(IOleInPlaceActiveObject *iface, REFIID riid, void **ppvObject)
-{
-    ACTOBJ_THIS
-    return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppvObject);
-}
-
-static ULONG WINAPI OleInPlaceActiveObject_AddRef(IOleInPlaceActiveObject *iface)
-{
-    ACTOBJ_THIS
-    return IHTMLDocument2_AddRef(HTMLDOC(This));
-}
-
-static ULONG WINAPI OleInPlaceActiveObject_Release(IOleInPlaceActiveObject *iface)
-{
-    ACTOBJ_THIS
-    return IHTMLDocument2_Release(HTMLDOC(This));
-}
-
-static HRESULT WINAPI OleInPlaceActiveObject_GetWindow(IOleInPlaceActiveObject *iface, HWND *phwnd)
-{
-    ACTOBJ_THIS
-    TRACE("(%p)->(%p)\n", This, phwnd);
-
-    if(!phwnd)
-        return E_INVALIDARG;
-
-    *phwnd = This->hwnd;
-    return S_OK;
-}
-
-static HRESULT WINAPI OleInPlaceActiveObject_ContextSensitiveHelp(IOleInPlaceActiveObject *iface, BOOL fEnterMode)
-{
-    ACTOBJ_THIS
-    FIXME("(%p)->(%x)\n", This, fEnterMode);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI OleInPlaceActiveObject_TranslateAccelerator(IOleInPlaceActiveObject *iface, LPMSG lpmsg)
-{
-    ACTOBJ_THIS
-    FIXME("(%p)->(%p)\n", This, lpmsg);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI OleInPlaceActiveObject_OnFrameWindowActivate(IOleInPlaceActiveObject *iface, BOOL fActivate)
-{
-    ACTOBJ_THIS
-    FIXME("(%p)->(%x)\n", This, fActivate);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI OleInPlaceActiveObject_OnDocWindowActivate(IOleInPlaceActiveObject *iface, BOOL fActivate)
-{
-    ACTOBJ_THIS
-    FIXME("(%p)->(%x)\n", This, fActivate);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI OleInPlaceActiveObject_ResizeBorder(IOleInPlaceActiveObject *iface, LPCRECT prcBorder,
-                                                IOleInPlaceUIWindow *pUIWindow, BOOL fFrameWindow)
-{
-    ACTOBJ_THIS
-    FIXME("(%p)->(%p %p %x)\n", This, prcBorder, pUIWindow, fFrameWindow);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI OleInPlaceActiveObject_EnableModeless(IOleInPlaceActiveObject *iface, BOOL fEnable)
-{
-    ACTOBJ_THIS
-    FIXME("(%p)->(%x)\n", This, fEnable);
-    return E_NOTIMPL;
-}
-
-static const IOleInPlaceActiveObjectVtbl OleInPlaceActiveObjectVtbl = {
-    OleInPlaceActiveObject_QueryInterface,
-    OleInPlaceActiveObject_AddRef,
-    OleInPlaceActiveObject_Release,
-    OleInPlaceActiveObject_GetWindow,
-    OleInPlaceActiveObject_ContextSensitiveHelp,
-    OleInPlaceActiveObject_TranslateAccelerator,
-    OleInPlaceActiveObject_OnFrameWindowActivate,
-    OleInPlaceActiveObject_OnDocWindowActivate,
-    OleInPlaceActiveObject_ResizeBorder,
-    OleInPlaceActiveObject_EnableModeless
-};
-
 void HTMLDocument_OleObj_Init(HTMLDocument *This)
 {
     This->lpOleObjectVtbl = &OleObjectVtbl;
     This->lpOleDocumentVtbl = &OleDocumentVtbl;
-    This->lpOleInPlaceActiveObjectVtbl = &OleInPlaceActiveObjectVtbl;
 
     This->client = NULL;
 }
--- /dev/null	1970-01-01 01:00:00.000000000 +0100
+++ dlls/mshtml/olewnd.c	2005-06-27 20:58:53.000000000 +0200
@@ -0,0 +1,239 @@
+/*
+ * 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 "config.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+
+#define COBJMACROS
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "ole2.h"
+#include "docobj.h"
+
+#include "mshtml.h"
+
+#include "wine/debug.h"
+
+#include "mshtml_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
+
+/**********************************************************
+ * IOleInPlaceActiveObject implementation
+ */
+
+#define ACTOBJ_THIS DEFINE_THIS(HTMLDocument, OleInPlaceActiveObject)
+
+static HRESULT WINAPI OleInPlaceActiveObject_QueryInterface(IOleInPlaceActiveObject *iface, REFIID riid, void **ppvObject)
+{
+    ACTOBJ_THIS
+    return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppvObject);
+}
+
+static ULONG WINAPI OleInPlaceActiveObject_AddRef(IOleInPlaceActiveObject *iface)
+{
+    ACTOBJ_THIS
+    return IHTMLDocument2_AddRef(HTMLDOC(This));
+}
+
+static ULONG WINAPI OleInPlaceActiveObject_Release(IOleInPlaceActiveObject *iface)
+{
+    ACTOBJ_THIS
+    return IHTMLDocument2_Release(HTMLDOC(This));
+}
+
+static HRESULT WINAPI OleInPlaceActiveObject_GetWindow(IOleInPlaceActiveObject *iface, HWND *phwnd)
+{
+    ACTOBJ_THIS
+    TRACE("(%p)->(%p)\n", This, phwnd);
+
+    if(!phwnd)
+        return E_INVALIDARG;
+
+    *phwnd = This->hwnd;
+    return S_OK;
+}
+
+static HRESULT WINAPI OleInPlaceActiveObject_ContextSensitiveHelp(IOleInPlaceActiveObject *iface, BOOL fEnterMode)
+{
+    ACTOBJ_THIS
+    FIXME("(%p)->(%x)\n", This, fEnterMode);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleInPlaceActiveObject_TranslateAccelerator(IOleInPlaceActiveObject *iface, LPMSG lpmsg)
+{
+    ACTOBJ_THIS
+    FIXME("(%p)->(%p)\n", This, lpmsg);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleInPlaceActiveObject_OnFrameWindowActivate(IOleInPlaceActiveObject *iface, BOOL fActivate)
+{
+    ACTOBJ_THIS
+    FIXME("(%p)->(%x)\n", This, fActivate);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleInPlaceActiveObject_OnDocWindowActivate(IOleInPlaceActiveObject *iface, BOOL fActivate)
+{
+    ACTOBJ_THIS
+    FIXME("(%p)->(%x)\n", This, fActivate);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleInPlaceActiveObject_ResizeBorder(IOleInPlaceActiveObject *iface, LPCRECT prcBorder,
+                                                IOleInPlaceUIWindow *pUIWindow, BOOL fFrameWindow)
+{
+    ACTOBJ_THIS
+    FIXME("(%p)->(%p %p %x)\n", This, prcBorder, pUIWindow, fFrameWindow);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleInPlaceActiveObject_EnableModeless(IOleInPlaceActiveObject *iface, BOOL fEnable)
+{
+    ACTOBJ_THIS
+    FIXME("(%p)->(%x)\n", This, fEnable);
+    return E_NOTIMPL;
+}
+
+static const IOleInPlaceActiveObjectVtbl OleInPlaceActiveObjectVtbl = {
+    OleInPlaceActiveObject_QueryInterface,
+    OleInPlaceActiveObject_AddRef,
+    OleInPlaceActiveObject_Release,
+    OleInPlaceActiveObject_GetWindow,
+    OleInPlaceActiveObject_ContextSensitiveHelp,
+    OleInPlaceActiveObject_TranslateAccelerator,
+    OleInPlaceActiveObject_OnFrameWindowActivate,
+    OleInPlaceActiveObject_OnDocWindowActivate,
+    OleInPlaceActiveObject_ResizeBorder,
+    OleInPlaceActiveObject_EnableModeless
+};
+
+#undef ACTOBJ_THIS
+
+/**********************************************************
+ * IOleInPlaceObjectWindowless implementation
+ */
+
+#define OLEINPLACEWND_THIS DEFINE_THIS(HTMLDocument, OleInPlaceObjectWindowless)
+
+static HRESULT WINAPI OleInPlaceObjectWindowless_QueryInterface(IOleInPlaceObjectWindowless *iface,
+        REFIID riid, void **ppvObject)
+{
+    OLEINPLACEWND_THIS
+    return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppvObject);
+}
+
+static ULONG WINAPI OleInPlaceObjectWindowless_AddRef(IOleInPlaceObjectWindowless *iface)
+{
+    OLEINPLACEWND_THIS
+    return IHTMLDocument2_AddRef(HTMLDOC(This));
+}
+
+static ULONG WINAPI OleInPlaceObjectWindowless_Release(IOleInPlaceObjectWindowless *iface)
+{
+    OLEINPLACEWND_THIS
+    return IHTMLDocument2_Release(HTMLDOC(This));
+}
+
+static HRESULT WINAPI OleInPlaceObjectWindowless_GetWindow(IOleInPlaceObjectWindowless *iface,
+        HWND *phwnd)
+{
+    OLEINPLACEWND_THIS
+    return IOleWindow_GetWindow(OLEWIN(This), phwnd);
+}
+
+static HRESULT WINAPI OleInPlaceObjectWindowless_ContextSensitiveHelp(IOleInPlaceObjectWindowless *iface,
+        BOOL fEnterMode)
+{
+    OLEINPLACEWND_THIS
+    return IOleWindow_ContextSensitiveHelp(OLEWIN(This), fEnterMode);
+}
+
+static HRESULT WINAPI OleInPlaceObjectWindowless_InPlaceDeactivate(IOleInPlaceObjectWindowless *iface)
+{
+    OLEINPLACEWND_THIS
+    FIXME("(%p)\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleInPlaceObjectWindowless_UIDeactivate(IOleInPlaceObjectWindowless *iface)
+{
+    OLEINPLACEWND_THIS
+    FIXME("(%p)\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleInPlaceObjectWindowless_SetObjectRects(IOleInPlaceObjectWindowless *iface,
+        LPCRECT lprcPosRect, LPCRECT lprcClipRect)
+{
+    OLEINPLACEWND_THIS
+    FIXME("(%p)->(%p %p)\n", This, lprcPosRect, lprcClipRect);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleInPlaceObjectWindowless_ReactivateAndUndo(IOleInPlaceObjectWindowless *iface)
+{
+    OLEINPLACEWND_THIS
+    FIXME("(%p)\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleInPlaceObjectWindowless_OnWindowMessage(IOleInPlaceObjectWindowless *iface,
+        UINT msg, WPARAM wParam, LPARAM lParam, LRESULT *lpResult)
+{
+    OLEINPLACEWND_THIS
+    FIXME("(%p)->(%u %u %lu %p)\n", This, msg, wParam, lParam, lpResult);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleInPlaceObjectWindowless_GetDropTarget(IOleInPlaceObjectWindowless *iface,
+        IDropTarget **ppDropTarget)
+{
+    OLEINPLACEWND_THIS
+    FIXME("(%p)->(%p)\n", This, ppDropTarget);
+    return E_NOTIMPL;
+}
+
+static IOleInPlaceObjectWindowlessVtbl OleInPlaceObjectWindowlessVtbl = {
+    OleInPlaceObjectWindowless_QueryInterface,
+    OleInPlaceObjectWindowless_AddRef,
+    OleInPlaceObjectWindowless_Release,
+    OleInPlaceObjectWindowless_GetWindow,
+    OleInPlaceObjectWindowless_ContextSensitiveHelp,
+    OleInPlaceObjectWindowless_InPlaceDeactivate,
+    OleInPlaceObjectWindowless_UIDeactivate,
+    OleInPlaceObjectWindowless_SetObjectRects,
+    OleInPlaceObjectWindowless_ReactivateAndUndo,
+    OleInPlaceObjectWindowless_OnWindowMessage,
+    OleInPlaceObjectWindowless_GetDropTarget
+};
+
+#undef INPLACEWIN_THIS
+
+void HTMLDocument_Window_Init(HTMLDocument *This)
+{
+    This->lpOleInPlaceActiveObjectVtbl = &OleInPlaceActiveObjectVtbl;
+    This->lpOleInPlaceObjectWindowlessVtbl = &OleInPlaceObjectWindowlessVtbl;
+}
+


More information about the wine-patches mailing list