MSHMTL: Added stub implementation of IOleControl

Jacek Caban jack at itma.pwr.wroc.pl
Thu Aug 4 05:17:42 CDT 2005


Changelog:
    Added stub implementation of IOleControl
-------------- next part --------------
Index: dlls/mshtml/oleobj.c
===================================================================
RCS file: /home/wine/wine/dlls/mshtml/oleobj.c,v
retrieving revision 1.12
diff -u -p -r1.12 oleobj.c
--- dlls/mshtml/oleobj.c	3 Aug 2005 21:26:40 -0000	1.12
+++ dlls/mshtml/oleobj.c	4 Aug 2005 10:12:01 -0000
@@ -764,6 +764,8 @@ static HRESULT WINAPI OleCommandTarget_E
     return OLECMDERR_E_UNKNOWNGROUP;
 }
 
+#undef CMDTARGET_THIS
+
 static const IOleCommandTargetVtbl OleCommandTargetVtbl = {
     OleCommandTarget_QueryInterface,
     OleCommandTarget_AddRef,
@@ -772,11 +774,76 @@ static const IOleCommandTargetVtbl OleCo
     OleCommandTarget_Exec
 };
 
+/**********************************************************
+ * IOleControl implementation
+ */
+
+#define CONTROL_THIS(iface) DEFINE_THIS(HTMLDocument, OleControl, iface)
+
+static HRESULT WINAPI OleControl_QueryInterface(IOleControl *iface, REFIID riid, void **ppv)
+{
+    HTMLDocument *This = CONTROL_THIS(iface);
+    return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppv);
+}
+
+static ULONG WINAPI OleControl_AddRef(IOleControl *iface)
+{
+    HTMLDocument *This = CONTROL_THIS(iface);
+    return IHTMLDocument2_AddRef(HTMLDOC(This));
+}
+
+static ULONG WINAPI OleControl_Release(IOleControl *iface)
+{
+    HTMLDocument *This = CONTROL_THIS(iface);
+    return IHTMLDocument_Release(HTMLDOC(This));
+}
+
+static HRESULT WINAPI OleControl_GetControlInfo(IOleControl *iface, CONTROLINFO *pCI)
+{
+    HTMLDocument *This = CONTROL_THIS(iface);
+    FIXME("(%p)->(%p)\n", This, pCI);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleControl_OnMnemonic(IOleControl *iface, MSG *pMsg)
+{
+    HTMLDocument *This = CONTROL_THIS(iface);
+    FIXME("(%p)->(%p)\n", This, pMsg);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleControl_OnAmbientPropertyChange(IOleControl *iface, DISPID dispID)
+{
+    HTMLDocument *This = CONTROL_THIS(iface);
+    FIXME("(%p)->(%ld)\n", This, dispID);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleControl_FreezeEvents(IOleControl *iface, BOOL bFreeze)
+{
+    HTMLDocument *This = CONTROL_THIS(iface);
+    FIXME("(%p)->(%x)\n", This, bFreeze);
+    return E_NOTIMPL;
+}
+
+#undef CONTROL_THIS
+
+static const IOleControlVtbl OleControlVtbl = {
+    OleControl_QueryInterface,
+    OleControl_AddRef,
+    OleControl_Release,
+    OleControl_GetControlInfo,
+    OleControl_OnMnemonic,
+    OleControl_OnAmbientPropertyChange,
+    OleControl_FreezeEvents
+};
+
 void HTMLDocument_OleObj_Init(HTMLDocument *This)
 {
     This->lpOleObjectVtbl = &OleObjectVtbl;
     This->lpOleDocumentVtbl = &OleDocumentVtbl;
     This->lpOleCommandTargetVtbl = &OleCommandTargetVtbl;
+    This->lpOleControlVtbl = &OleControlVtbl;
 
     This->client = NULL;
     This->hostui = NULL;
Index: dlls/mshtml/mshtml_private.h
===================================================================
RCS file: /home/wine/wine/dlls/mshtml/mshtml_private.h,v
retrieving revision 1.18
diff -u -p -r1.18 mshtml_private.h
--- dlls/mshtml/mshtml_private.h	2 Aug 2005 09:49:07 -0000	1.18
+++ dlls/mshtml/mshtml_private.h	4 Aug 2005 10:12:01 -0000
@@ -40,6 +40,7 @@ typedef struct {
     const IOleInPlaceObjectWindowlessVtbl *lpOleInPlaceObjectWindowlessVtbl;
     const IServiceProviderVtbl            *lpServiceProviderVtbl;
     const IOleCommandTargetVtbl           *lpOleCommandTargetVtbl;
+    const IOleControlVtbl                 *lpOleControlVtbl;
 
     LONG ref;
 
@@ -84,6 +85,7 @@ struct NSContainer {
 #define INPLACEWIN(x)    ((IOleInPlaceObjectWindowless*)  &(x)->lpOleInPlaceObjectWindowlessVtbl)
 #define SERVPROV(x)      ((IServiceProvider*)             &(x)->lpServiceProviderVtbl)
 #define CMDTARGET(x)     ((IOleCommandTarget*)            &(x)->lpOleCommandTargetVtbl)
+#define CONTROL(x)       ((IOleControl*)                  &(x)->lpOleControlVtbl)
 
 #define DEFINE_THIS(cls,ifc,iface) ((cls*)((BYTE*)(iface)-offsetof(cls,lp ## ifc ## Vtbl)))
 
Index: dlls/mshtml/htmldoc.c
===================================================================
RCS file: /home/wine/wine/dlls/mshtml/htmldoc.c,v
retrieving revision 1.14
diff -u -p -r1.14 htmldoc.c
--- dlls/mshtml/htmldoc.c	2 Aug 2005 09:49:07 -0000	1.14
+++ dlls/mshtml/htmldoc.c	4 Aug 2005 10:12:01 -0000
@@ -102,6 +102,9 @@ static HRESULT WINAPI HTMLDocument_Query
     }else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) {
         TRACE("(%p)->(IID_IOleCommandTarget, %p)\n", This, ppvObject);
         *ppvObject = CMDTARGET(This);
+    }else if(IsEqualGUID(&IID_IOleControl, riid)) {
+        TRACE("(%p)->(IID_IOleControl, %p)\n", This, ppvObject);
+        *ppvObject = CONTROL(This);
     }
 
     if(*ppvObject) {


More information about the wine-patches mailing list