stubs for MSHTML

Mike McCormack mike at codeweavers.com
Thu Sep 4 04:14:14 CDT 2003


ChangeLog:
* add an initial (mostly stub) implementation of MSHTML.DLL

-------------- next part --------------
Index: configure.ac
===================================================================
RCS file: /home/wine/wine/configure.ac,v
retrieving revision 1.176
diff -u -r1.176 configure.ac
--- configure.ac	3 Sep 2003 00:26:08 -0000	1.176
+++ configure.ac	4 Sep 2003 09:07:58 -0000
@@ -1452,6 +1452,7 @@
 dlls/msacm/msg711/Makefile
 dlls/msacm/winemp3/Makefile
 dlls/msdmo/Makefile
+dlls/mshtml/Makefile
 dlls/msi/Makefile
 dlls/msimg32/Makefile
 dlls/msisys/Makefile
--- /dev/null	1994-07-18 09:46:18.000000000 +1000
+++ dlls/mshtml/main.c	2003-09-04 18:25:23.000000000 +1000
@@ -0,0 +1,195 @@
+/*
+ *    MSHTML Class Factory
+ *
+ * Copyright 2002 Lionel Ulmer
+ * Copyright 2003 Mike McCormack
+ *
+ * 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 "winbase.h"
+#include "ole2.h"
+
+#include "uuids.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
+
+extern HRESULT HTMLDocument_create(IUnknown *pUnkOuter, LPVOID *ppObj);
+
+/* For the moment, do nothing here. */
+BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
+{
+    switch(fdwReason) {
+        case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hInstDLL);
+	    break;
+	case DLL_PROCESS_DETACH:
+	    break;
+    }
+    return TRUE;
+}
+
+/******************************************************************************
+ * MSHTML ClassFactory
+ */
+typedef struct {
+    IClassFactory ITF_IClassFactory;
+
+    DWORD ref;
+    HRESULT (*pfnCreateInstance)(IUnknown *pUnkOuter, LPVOID *ppObj);
+} IClassFactoryImpl;
+
+struct object_creation_info
+{
+    const CLSID *clsid;
+    LPCSTR szClassName;
+    HRESULT (*pfnCreateInstance)(IUnknown *pUnkOuter, LPVOID *ppObj);
+};
+
+static const struct object_creation_info object_creation[] =
+{
+    { &CLSID_HTMLDocument, "HTMLDocument", HTMLDocument_create },
+};
+
+static HRESULT WINAPI
+HTMLCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj)
+{
+    ICOM_THIS(IClassFactoryImpl,iface);
+
+    if (IsEqualGUID(riid, &IID_IUnknown)
+	|| IsEqualGUID(riid, &IID_IClassFactory))
+    {
+	IClassFactory_AddRef(iface);
+	*ppobj = This;
+	return S_OK;
+    }
+
+    WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI HTMLCF_AddRef(LPCLASSFACTORY iface) {
+    ICOM_THIS(IClassFactoryImpl,iface);
+    return ++(This->ref);
+}
+
+static ULONG WINAPI HTMLCF_Release(LPCLASSFACTORY iface) {
+    ICOM_THIS(IClassFactoryImpl,iface);
+
+    ULONG ref = --This->ref;
+
+    if (ref == 0)
+	HeapFree(GetProcessHeap(), 0, This);
+
+    return ref;
+}
+
+
+static HRESULT WINAPI HTMLCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter,
+					  REFIID riid, LPVOID *ppobj) {
+    ICOM_THIS(IClassFactoryImpl,iface);
+    HRESULT hres;
+    LPUNKNOWN punk;
+    
+    TRACE("(%p)->(%p,%s,%p)\n",This,pOuter,debugstr_guid(riid),ppobj);
+
+    hres = This->pfnCreateInstance(pOuter, (LPVOID *) &punk);
+    if (FAILED(hres)) {
+        *ppobj = NULL;
+        return hres;
+    }
+    hres = IUnknown_QueryInterface(punk, riid, ppobj);
+    if (FAILED(hres)) {
+        *ppobj = NULL;
+	return hres;
+    }
+    IUnknown_Release(punk);
+    return hres;
+}
+
+static HRESULT WINAPI HTMLCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) {
+    ICOM_THIS(IClassFactoryImpl,iface);
+    FIXME("(%p)->(%d),stub!\n",This,dolock);
+    return S_OK;
+}
+
+static ICOM_VTABLE(IClassFactory) HTMLCF_Vtbl =
+{
+    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+    HTMLCF_QueryInterface,
+    HTMLCF_AddRef,
+    HTMLCF_Release,
+    HTMLCF_CreateInstance,
+    HTMLCF_LockServer
+};
+
+
+HRESULT WINAPI MSHTML_DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
+{
+    int i;
+    IClassFactoryImpl *factory;
+
+    TRACE("%s %s %p\n",debugstr_guid(rclsid), debugstr_guid(iid), ppv);
+    
+    if ( !IsEqualGUID( &IID_IClassFactory, iid )
+	 && ! IsEqualGUID( &IID_IUnknown, iid) )
+	return E_NOINTERFACE;
+
+    for (i=0; i < sizeof(object_creation)/sizeof(object_creation[0]); i++)
+    {
+	if (IsEqualGUID(object_creation[i].clsid, rclsid))
+	    break;
+    }
+
+    if (i == sizeof(object_creation)/sizeof(object_creation[0]))
+    {
+	FIXME("%s: no class found.\n", debugstr_guid(rclsid));
+	return CLASS_E_CLASSNOTAVAILABLE;
+    }
+
+    TRACE("Creating a class factory for %s\n",object_creation[i].szClassName);
+
+    factory = HeapAlloc(GetProcessHeap(), 0, sizeof(*factory));
+    if (factory == NULL) return E_OUTOFMEMORY;
+
+    factory->ITF_IClassFactory.lpVtbl = &HTMLCF_Vtbl;
+    factory->ref = 1;
+
+    factory->pfnCreateInstance = object_creation[i].pfnCreateInstance;
+
+    *ppv = &(factory->ITF_IClassFactory);
+
+    TRACE("(%p) <- %p\n", ppv, &(factory->ITF_IClassFactory) );
+
+    return S_OK;
+}
+
+HRESULT WINAPI MSHTML_DllCanUnloadNow()
+{
+    FIXME("\n");
+    return S_FALSE;
+}
+
+/* appears to have the same prototype as WinMain */
+INT WINAPI RunHTMLApplication( HINSTANCE hinst, HINSTANCE hPrevInst,
+                               LPCSTR szCmdLine, INT nCmdShow )
+{
+    FIXME("%p %p %s %d\n", hinst, hPrevInst, debugstr_a(szCmdLine), nCmdShow );
+    return 0;
+}
+
--- /dev/null	1994-07-18 09:46:18.000000000 +1000
+++ dlls/mshtml/document.c	2003-09-04 19:03:49.000000000 +1000
@@ -0,0 +1,766 @@
+/*
+ *    HTML Document class
+ *
+ * Copyright 2003 Mike McCormack
+ *
+ * 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 "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "winnls.h"
+#include "docobj.h"
+#include "ole2.h"
+#include "uuids.h"
+#include "urlmon.h"
+#include "oleidl.h"
+#include "objidl.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
+
+typedef struct _HTMLDocument_impl {
+    ICOM_VTABLE(IPersistMoniker) *IPersistMoniker_vtbl;
+    ICOM_VTABLE(IPersistFile) *IPersistFile_vtbl;
+    ICOM_VTABLE(IPersist) *IPersist_vtbl;
+    ICOM_VTABLE(IOleObject) *IOleObject_vtbl;
+    ICOM_VTABLE(IViewObject) *IViewObject_vtbl;
+    ICOM_VTABLE(IOleDocument) *IOleDocument_vtbl;
+    ULONG ref_count;
+    IOleClientSite *site;
+} HTMLDocument_impl;
+
+
+static ULONG WINAPI HTMLDocument_AddRef(HTMLDocument_impl *This)
+{
+    return ++This->ref_count;
+}
+
+static ULONG WINAPI HTMLDocument_Release(HTMLDocument_impl *This)
+{
+    ULONG count;
+
+    count = --This->ref_count ;
+    if( !count )
+        HeapFree( GetProcessHeap(), 0, This );
+    
+    return count;
+}
+
+static HRESULT WINAPI HTMLDocument_QueryInterface(
+         HTMLDocument_impl *This, REFIID riid, LPVOID *ppv)
+{
+    TRACE("%p %s %p\n", This, debugstr_guid(riid), ppv);
+
+    if( IsEqualGUID( riid, &IID_IUnknown ) )
+    {
+        TRACE("returning IUnknown\n");
+        HTMLDocument_AddRef(This);
+        *ppv = This;
+        return S_OK;
+    }
+    if( IsEqualGUID( riid, &IID_IPersistMoniker ) )
+    {
+        TRACE("returning IPersistMoniker\n");
+        HTMLDocument_AddRef(This);
+        *ppv = This;
+        return S_OK;
+    }
+    if( IsEqualGUID( riid, &IID_IPersistFile ) )
+    {
+        TRACE("returning IPersistFile\n");
+        HTMLDocument_AddRef(This);
+        *ppv = &(This->IPersistFile_vtbl);
+        return S_OK;
+    }
+    if( IsEqualGUID( riid, &IID_IOleObject ) )
+    {
+        TRACE("returning IOleObject\n");
+        HTMLDocument_AddRef(This);
+        *ppv = &(This->IOleObject_vtbl);
+        return S_OK;
+    }
+    if( IsEqualGUID( riid, &IID_IPersist ) )
+    {
+        TRACE("returning IPersist\n");
+        HTMLDocument_AddRef(This);
+        *ppv = &(This->IPersist_vtbl);
+        return S_OK;
+    }
+    if( IsEqualGUID( riid, &IID_IViewObject ) )
+    {
+        TRACE("returning IViewObject\n");
+        HTMLDocument_AddRef(This);
+        *ppv = &(This->IViewObject_vtbl);
+        return S_OK;
+    }
+    if( IsEqualGUID( riid, &IID_IOleDocument ) )
+    {
+        TRACE("returning IOleDocument\n");
+        HTMLDocument_AddRef(This);
+        *ppv = &(This->IOleDocument_vtbl);
+        return S_OK;
+    }
+    if( IsEqualGUID( riid, &IID_IDispatch ) )
+    {
+        TRACE("returning IDispatch\n");
+    }
+    if( IsEqualGUID( riid, &IID_IOleCommandTarget ) )
+    {
+        TRACE("returning IOleCommandTarget\n");
+    }
+    return E_NOINTERFACE;
+}
+
+static HRESULT WINAPI fnIPersistMoniker_QueryInterface(
+         IPersistMoniker *iface, REFIID riid, LPVOID *ppv)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
+    return HTMLDocument_QueryInterface(This, riid, ppv);
+}
+
+static ULONG WINAPI fnIPersistMoniker_AddRef(IPersistMoniker *iface)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
+    return HTMLDocument_AddRef(This);
+}
+
+static ULONG WINAPI fnIPersistMoniker_Release(IPersistMoniker *iface)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
+    return HTMLDocument_Release(This);
+}
+
+static HRESULT WINAPI fnIPersistMoniker_GetClassID(IPersistMoniker *iface,
+           CLSID *pClassID )
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
+    FIXME("%p\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIPersistMoniker_IsDirty(IPersistMoniker *iface )
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
+    FIXME("%p\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIPersistMoniker_Load(IPersistMoniker *iface,
+           BOOL fFullyAvailable, IMoniker *pimkName, LPBC pibc, DWORD grfMode )
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
+    IStream *stm;
+    HRESULT r;
+    unsigned char buffer[0x201];
+    ULONG count;
+
+    TRACE("%p %d %p %p %08lx\n", This, 
+          fFullyAvailable, pimkName, pibc, grfMode);
+
+    r = IMoniker_BindToStorage( pimkName, pibc, NULL, 
+                                &IID_IStream, (LPVOID*) &stm );
+    if( FAILED( r ) )
+    {
+        TRACE("IMoniker_BindToStorage failed %08lx\n", r);
+        return r;
+    }
+
+    while( 1 )
+    {
+        r = IStream_Read( stm, buffer, sizeof buffer-1, &count);
+        if( FAILED( r ) )
+            break;
+        if( count == 0 )
+            break;
+        buffer[count]=0;
+        TRACE("%s\n",buffer);
+    }
+
+    IStream_Release( stm );
+
+    return S_OK;
+}
+
+static HRESULT WINAPI fnIPersistMoniker_Save(IPersistMoniker *iface,
+           IMoniker *pinkName, LPBC pibc, BOOL fRemember )
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
+    FIXME("%p %p %p %d\n", This, pinkName, pibc, fRemember);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIPersistMoniker_SaveCompleted(IPersistMoniker *iface,
+           IMoniker *pinkName, LPBC pibc )
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
+    FIXME("%p %p %p\n", This, pinkName, pibc);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIPersistMoniker_GetCurMoniker(IPersistMoniker *iface,
+           IMoniker **pinkName )
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistMoniker_vtbl, iface);
+    FIXME("%p\n", This);
+    return E_NOTIMPL;
+}
+
+static ICOM_VTABLE(IPersistMoniker) IPersistMoniker_vtbl =
+{
+    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+    fnIPersistMoniker_QueryInterface,
+    fnIPersistMoniker_AddRef,
+    fnIPersistMoniker_Release,
+    fnIPersistMoniker_GetClassID,
+    fnIPersistMoniker_IsDirty,
+    fnIPersistMoniker_Load,
+    fnIPersistMoniker_Save,
+    fnIPersistMoniker_SaveCompleted,
+    fnIPersistMoniker_GetCurMoniker
+};
+
+static ULONG WINAPI fnIPersistFile_AddRef(IPersistFile *iface)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
+    return HTMLDocument_AddRef(This);
+}
+
+static ULONG WINAPI fnIPersistFile_Release(IPersistFile *iface)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
+    return HTMLDocument_Release(This);
+}
+
+static HRESULT WINAPI fnIPersistFile_QueryInterface(
+           IPersistFile *iface, REFIID riid, LPVOID *ppv)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
+    return HTMLDocument_QueryInterface(This, riid, ppv);
+}
+
+static HRESULT WINAPI fnIPersistFile_GetClassID(IPersistFile *iface,
+           CLSID *pClassID )
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
+
+    TRACE("%p\n", This);
+
+    memcpy( pClassID, &CLSID_HTMLDocument, sizeof CLSID_HTMLDocument);
+    return S_OK;
+}
+
+static HRESULT WINAPI fnIPersistFile_IsDirty(IPersistFile *iface )
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
+    FIXME("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIPersistFile_Load(IPersistFile *iface,
+           LPCOLESTR pszFileName, DWORD grfMode )
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
+    FIXME("%p %s %08lx\n", This, debugstr_w(pszFileName), grfMode);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIPersistFile_Save(IPersistFile *iface, 
+           LPCOLESTR pszFileName, BOOL fRemember )
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
+    FIXME("%p %s %d\n", This, debugstr_w(pszFileName), fRemember);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIPersistFile_SaveCompleted(IPersistFile *iface,
+           LPCOLESTR pszFileName )
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
+    FIXME("%p %s\n", This, debugstr_w(pszFileName));
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIPersistFile_GetCurFile(IPersistFile *iface,
+           LPOLESTR* ppszFileName)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersistFile_vtbl, iface);
+    FIXME("%p %p\n",This,ppszFileName);
+    return E_NOTIMPL;
+}
+
+static ICOM_VTABLE(IPersistFile) IPersistFile_vtbl =
+{
+    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+    fnIPersistFile_QueryInterface,
+    fnIPersistFile_AddRef,
+    fnIPersistFile_Release,
+    fnIPersistFile_GetClassID,
+    fnIPersistFile_IsDirty,
+    fnIPersistFile_Load,
+    fnIPersistFile_Save,
+    fnIPersistFile_SaveCompleted,
+    fnIPersistFile_GetCurFile,
+};
+
+static ULONG WINAPI fnIOleObject_AddRef(IOleObject *iface)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    return HTMLDocument_AddRef(This);
+}
+
+static ULONG WINAPI fnIOleObject_Release(IOleObject *iface)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    return HTMLDocument_Release(This);
+}
+
+static HRESULT WINAPI fnIOleObject_QueryInterface(
+           IOleObject *iface, REFIID riid, LPVOID *ppv)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    return HTMLDocument_QueryInterface(This, riid, ppv);
+}
+
+static HRESULT WINAPI fnIOleObject_SetClientSite(IOleObject *iface,
+           IOleClientSite *pClientSite)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+
+    TRACE("%p %p\n",This, pClientSite);
+
+    if( This->site )
+        IOleClientSite_Release( This->site );
+    if( pClientSite )
+        IOleClientSite_AddRef(pClientSite);
+    This->site = pClientSite;
+
+    return S_OK;
+}
+
+static HRESULT WINAPI fnIOleObject_GetClientSite(IOleObject *iface,
+           IOleClientSite **ppClientSite)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+
+    TRACE("%p\n",This);
+
+    if( This->site )
+        IOleClientSite_AddRef( This->site );
+    *ppClientSite = This->site;
+
+    return S_OK;
+}
+
+static HRESULT WINAPI fnIOleObject_SetHostNames(IOleObject *iface,
+           LPCOLESTR szContainerApp, LPCOLESTR szContainerObj)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_Close(IOleObject *iface,
+           DWORD dwSaveOption)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_SetMoniker(IOleObject *iface,
+           DWORD dwWhichMoniker, IMoniker *pmk)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_GetMoniker(IOleObject *iface,
+           DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_InitFromData(IOleObject *iface,
+           IDataObject *pDataObject, BOOL fCreation, DWORD dwReserved)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_GetClipboardData(IOleObject *iface,
+           DWORD dwReserved, IDataObject **ppDataObject)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_DoVerb(IOleObject *iface,
+           LONG iVerb, struct tagMSG *lpmsg, IOleClientSite *pActiveSite,
+           LONG lindex, HWND hwndParent, LPCRECT lprcPosRect)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+
+    TRACE("%p %ld %p %p %ld %p %p\n", This, 
+          iVerb, lpmsg, pActiveSite, lindex, hwndParent, lprcPosRect);
+
+    switch( iVerb )
+    {
+    case OLEIVERB_SHOW:
+        TRACE("OLEIVERB_SHOW  r = (%ld,%ld)-(%ld,%ld)\n",
+              lprcPosRect->left,  lprcPosRect->top,
+              lprcPosRect->right, lprcPosRect->bottom );
+        break;
+    }
+
+    //return E_NOTIMPL;
+    return S_OK;
+}
+
+static HRESULT WINAPI fnIOleObject_EnumVerbs(IOleObject *iface,
+           IEnumOLEVERB **ppEnumOleVerb)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_Update(IOleObject *iface)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_IsUpToDate(IOleObject *iface)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_GetUserClassID(IOleObject *iface,
+           CLSID *pClsid)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_GetUserType(IOleObject *iface,
+           DWORD dwFormOfType, LPOLESTR *pszUserType)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_SetExtent(IOleObject *iface,
+           DWORD dwDrawAspect, SIZEL *psizel)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_GetExtent(IOleObject *iface,
+           DWORD dwDrawAspect, SIZEL *psizel)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_Advise(IOleObject *iface,
+           IAdviseSink *pAdvSink, DWORD *pdwConnection)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_Unadvise(IOleObject *iface,
+           DWORD dwConnection)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_EnumAdvise(IOleObject *iface,
+           IEnumSTATDATA **ppenumAdvise)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_GetMiscStatus(IOleObject *iface,
+           DWORD dwAspect, DWORD *pdwStatus)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleObject_SetColorScheme(IOleObject *iface,
+           struct tagLOGPALETTE *pLogpal)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleObject_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static ICOM_VTABLE(IOleObject) IOleObject_vtbl =
+{
+    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+    fnIOleObject_QueryInterface,
+    fnIOleObject_AddRef,
+    fnIOleObject_Release,
+    fnIOleObject_SetClientSite,
+    fnIOleObject_GetClientSite,
+    fnIOleObject_SetHostNames,
+    fnIOleObject_Close,
+    fnIOleObject_SetMoniker,
+    fnIOleObject_GetMoniker,
+    fnIOleObject_InitFromData,
+    fnIOleObject_GetClipboardData,
+    fnIOleObject_DoVerb,
+    fnIOleObject_EnumVerbs,
+    fnIOleObject_Update,
+    fnIOleObject_IsUpToDate,
+    fnIOleObject_GetUserClassID,
+    fnIOleObject_GetUserType,
+    fnIOleObject_SetExtent,
+    fnIOleObject_GetExtent,
+    fnIOleObject_Advise,
+    fnIOleObject_Unadvise,
+    fnIOleObject_EnumAdvise,
+    fnIOleObject_GetMiscStatus,
+    fnIOleObject_SetColorScheme,
+};
+
+static ULONG WINAPI fnIPersist_AddRef(IPersist *iface)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersist_vtbl, iface);
+    return HTMLDocument_AddRef(This);
+}
+
+static ULONG WINAPI fnIPersist_Release(IPersist *iface)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersist_vtbl, iface);
+    return HTMLDocument_Release(This);
+}
+
+static HRESULT WINAPI fnIPersist_QueryInterface(
+           IPersist *iface, REFIID riid, LPVOID *ppv)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersist_vtbl, iface);
+    return HTMLDocument_QueryInterface(This, riid, ppv);
+}
+
+static HRESULT WINAPI fnIPersist_GetClassID(
+           IPersist *iface, CLSID * pClassID)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IPersist_vtbl, iface);
+    TRACE("%p %p\n", This, pClassID );
+    memcpy( pClassID, &CLSID_HTMLDocument, sizeof CLSID_HTMLDocument);
+    return S_OK;
+}
+
+static ICOM_VTABLE(IPersist) IPersist_vtbl =
+{
+    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+    fnIPersist_QueryInterface,
+    fnIPersist_AddRef,
+    fnIPersist_Release,
+    fnIPersist_GetClassID,
+};
+
+static ULONG WINAPI fnIViewObject_AddRef(IViewObject *iface)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
+    return HTMLDocument_AddRef(This);
+}
+
+static ULONG WINAPI fnIViewObject_Release(IViewObject *iface)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
+    return HTMLDocument_Release(This);
+}
+
+static HRESULT WINAPI fnIViewObject_QueryInterface(
+           IViewObject *iface, REFIID riid, LPVOID *ppv)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
+    return HTMLDocument_QueryInterface(This, riid, ppv);
+}
+
+static HRESULT WINAPI fnIViewObject_Draw( IViewObject *iface,
+           DWORD dwDrawAspect, LONG lindex, void *pvAspect,
+           DVTARGETDEVICE *ptd, HDC hdcTargetDev, HDC hdcDraw,
+           LPCRECTL lprcBounds, LPCRECTL lprcWBounds, 
+           BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue),
+           DWORD dwContinue)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
+    FIXME("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIViewObject_GetColorSet( IViewObject *iface,
+            DWORD dwDrawAspect, LONG lindex, void *pvAspect,
+            DVTARGETDEVICE *ptd, HDC hicTargetDevice,
+            struct tagLOGPALETTE **ppColorSet)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
+    FIXME("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIViewObject_Freeze( IViewObject *iface,
+           DWORD dwDrawAspect, LONG lindex, void *pvAspect, DWORD *pdwFreeze)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
+    FIXME("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIViewObject_Unfreeze( IViewObject *iface,
+           DWORD dwFreeze)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
+    FIXME("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIViewObject_SetAdvise( IViewObject *iface,
+           DWORD aspects, DWORD advf, IAdviseSink *pAdvSink)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
+    FIXME("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIViewObject_GetAdvise( IViewObject *iface,
+           DWORD *pAspects, DWORD *pAdvf, IAdviseSink **ppAdvSink)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IViewObject_vtbl, iface);
+    FIXME("%p\n",This);
+    return E_NOTIMPL;
+}
+
+
+static ICOM_VTABLE(IViewObject) IViewObject_vtbl =
+{
+    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+    fnIViewObject_QueryInterface,
+    fnIViewObject_AddRef,
+    fnIViewObject_Release,
+    fnIViewObject_Draw,
+    fnIViewObject_GetColorSet,
+    fnIViewObject_Freeze,
+    fnIViewObject_Unfreeze,
+    fnIViewObject_SetAdvise,
+    fnIViewObject_GetAdvise,
+};
+
+static ULONG WINAPI fnIOleDocument_AddRef(IOleDocument *iface)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleDocument_vtbl, iface);
+    return HTMLDocument_AddRef(This);
+}
+
+static ULONG WINAPI fnIOleDocument_Release(IOleDocument *iface)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleDocument_vtbl, iface);
+    return HTMLDocument_Release(This);
+}
+
+static HRESULT WINAPI fnIOleDocument_QueryInterface(
+           IOleDocument *iface, REFIID riid, LPVOID *ppv)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleDocument_vtbl, iface);
+    return HTMLDocument_QueryInterface(This, riid, ppv);
+}
+
+static HRESULT WINAPI fnIOleDocument_CreateView(IOleDocument *iface,
+           IOleInPlaceSite *pIPSite, IStream *pstm, DWORD dwReserved, 
+           IOleDocumentView **ppView)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleDocument_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleDocument_GetDocMiscStatus(IOleDocument *iface,
+           DWORD *pdwStatus)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleDocument_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI fnIOleDocument_EnumViews(IOleDocument *iface,
+           IEnumOleDocumentViews **ppEnum, IOleDocumentView **ppView)
+{
+    ICOM_THIS_MULTI(HTMLDocument_impl, IOleDocument_vtbl, iface);
+    TRACE("%p\n",This);
+    return E_NOTIMPL;
+}
+
+static ICOM_VTABLE(IOleDocument) IOleDocument_vtbl =
+{
+    ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+    fnIOleDocument_QueryInterface,
+    fnIOleDocument_AddRef,
+    fnIOleDocument_Release,
+    fnIOleDocument_CreateView,
+    fnIOleDocument_GetDocMiscStatus,
+    fnIOleDocument_EnumViews,
+};
+
+HRESULT HTMLDocument_create(IUnknown *pUnkOuter, LPVOID *ppObj)
+{
+    HTMLDocument_impl *This;
+
+    TRACE("%p %p\n",pUnkOuter,ppObj);
+
+    This = HeapAlloc(GetProcessHeap(), 0, sizeof (HTMLDocument_impl));
+    This->IPersistMoniker_vtbl = &IPersistMoniker_vtbl;
+    This->IPersistFile_vtbl = &IPersistFile_vtbl;
+    This->IOleObject_vtbl = &IOleObject_vtbl;
+    This->IPersist_vtbl = &IPersist_vtbl;
+    This->IViewObject_vtbl = &IViewObject_vtbl;
+    This->IOleDocument_vtbl = &IOleDocument_vtbl;
+    This->ref_count = 1;
+    This->site = NULL;
+
+    *ppObj = (LPVOID) This;
+
+    TRACE("(%p) <- %p\n", ppObj, This);
+    
+    return S_OK;
+}
+
--- /dev/null	1994-07-18 09:46:18.000000000 +1000
+++ dlls/mshtml/Makefile.in	2003-09-04 18:25:33.000000000 +1000
@@ -0,0 +1,19 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = mshtml.dll
+IMPORTS   = user32 advapi32 kernel32 ntdll
+EXTRALIBS = $(LIBUNICODE) $(LIBUUID)
+EXTRADEFS = -DCOM_NO_WINDOWS_H
+
+LDDLLFLAGS = @LDDLLFLAGS@
+SYMBOLFILE = $(MODULE).tmp.o
+
+C_SRCS = \
+	document.c \
+	main.c
+
+ at MAKE_DLL_RULES@
+
+### Dependencies:
--- /dev/null	1994-07-18 09:46:18.000000000 +1000
+++ dlls/mshtml/mshtml.spec	2003-09-04 18:25:43.000000000 +1000
@@ -0,0 +1,22 @@
+
+1 stub PrintHTML
+2 stub SvrTri_ClearCache
+3 stub CreateHTMLPropertyPage
+4 stdcall -private DllCanUnloadNow() MSHTML_DllCanUnloadNow
+5 stub DllEnumClassObjects
+6 stdcall -private DllGetClassObject(ptr ptr ptr) MSHTML_DllGetClassObject
+7 stub DllInstall
+8 stub DllRegisterServer
+9 stub DllUnregisterServer
+10 stub MatchExactGetIDsOfNames
+11 stub RNIGetCompatibleVersion
+12 stdcall RunHTMLApplication()
+13 stub ShowHTMLDialog
+14 stub ShowModalDialog
+15 stub ShowModelessHTMLDialog
+16 stub SvrTri_GetDLText
+17 stub SvrTri_NormalizeUA
+18 stub com_ms_osp_ospmrshl_classInit
+19 stub com_ms_osp_ospmrshl_copyToExternal
+20 stub com_ms_osp_ospmrshl_releaseByValExternal
+21 stub com_ms_osp_ospmrshl_toJava
--- /dev/null	1994-07-18 09:46:18.000000000 +1000
+++ dlls/mshtml/.cvsignore	2003-09-04 19:06:06.000000000 +1000
@@ -0,0 +1,4 @@
+Makefile
+mshtml.dll.dbg.c
+mshtml.spec.c
+mshtml.spec.def


More information about the wine-patches mailing list