Added an initial (mostly stub) implementation of MSHTML.DLL.
This commit is contained in:
parent
1136408fc6
commit
aa1c2a35b1
|
@ -1452,6 +1452,7 @@ dlls/msacm/msadp32/Makefile
|
||||||
dlls/msacm/msg711/Makefile
|
dlls/msacm/msg711/Makefile
|
||||||
dlls/msacm/winemp3/Makefile
|
dlls/msacm/winemp3/Makefile
|
||||||
dlls/msdmo/Makefile
|
dlls/msdmo/Makefile
|
||||||
|
dlls/mshtml/Makefile
|
||||||
dlls/msi/Makefile
|
dlls/msi/Makefile
|
||||||
dlls/msimg32/Makefile
|
dlls/msimg32/Makefile
|
||||||
dlls/msisys/Makefile
|
dlls/msisys/Makefile
|
||||||
|
|
|
@ -58,6 +58,7 @@ BASEDIRS = \
|
||||||
msacm/msg711 \
|
msacm/msg711 \
|
||||||
msacm/winemp3 \
|
msacm/winemp3 \
|
||||||
msdmo \
|
msdmo \
|
||||||
|
mshtml \
|
||||||
msi \
|
msi \
|
||||||
msimg32 \
|
msimg32 \
|
||||||
msisys \
|
msisys \
|
||||||
|
@ -248,6 +249,7 @@ SYMLINKS = \
|
||||||
msadp32.acm$(DLLEXT) \
|
msadp32.acm$(DLLEXT) \
|
||||||
msdmo.dll$(DLLEXT) \
|
msdmo.dll$(DLLEXT) \
|
||||||
msg711.acm$(DLLEXT) \
|
msg711.acm$(DLLEXT) \
|
||||||
|
mshtml.dll$(DLLEXT) \
|
||||||
msi.dll$(DLLEXT) \
|
msi.dll$(DLLEXT) \
|
||||||
msimg32.dll$(DLLEXT) \
|
msimg32.dll$(DLLEXT) \
|
||||||
msisys.ocx$(DLLEXT) \
|
msisys.ocx$(DLLEXT) \
|
||||||
|
@ -484,6 +486,9 @@ msdmo.dll$(DLLEXT): msdmo/msdmo.dll$(DLLEXT)
|
||||||
msg711.acm$(DLLEXT): msacm/msg711/msg711.acm$(DLLEXT)
|
msg711.acm$(DLLEXT): msacm/msg711/msg711.acm$(DLLEXT)
|
||||||
$(RM) $@ && $(LN_S) msacm/msg711/msg711.acm$(DLLEXT) $@
|
$(RM) $@ && $(LN_S) msacm/msg711/msg711.acm$(DLLEXT) $@
|
||||||
|
|
||||||
|
mshtml.dll$(DLLEXT): mshtml/mshtml.dll$(DLLEXT)
|
||||||
|
$(RM) $@ && $(LN_S) mshtml/mshtml.dll$(DLLEXT) $@
|
||||||
|
|
||||||
msi.dll$(DLLEXT): msi/msi.dll$(DLLEXT)
|
msi.dll$(DLLEXT): msi/msi.dll$(DLLEXT)
|
||||||
$(RM) $@ && $(LN_S) msi/msi.dll$(DLLEXT) $@
|
$(RM) $@ && $(LN_S) msi/msi.dll$(DLLEXT) $@
|
||||||
|
|
||||||
|
@ -724,6 +729,7 @@ IMPORT_LIBS = \
|
||||||
libmpr \
|
libmpr \
|
||||||
libmsacm32 \
|
libmsacm32 \
|
||||||
libmsdmo \
|
libmsdmo \
|
||||||
|
libmshtml \
|
||||||
libmsi \
|
libmsi \
|
||||||
libmsimg32 \
|
libmsimg32 \
|
||||||
libmsnet32 \
|
libmsnet32 \
|
||||||
|
@ -1000,6 +1006,11 @@ libmsdmo.def: msdmo/msdmo.spec.def
|
||||||
libmsdmo.a: msdmo/msdmo.spec.def
|
libmsdmo.a: msdmo/msdmo.spec.def
|
||||||
$(DLLTOOL) -k -l $@ -d msdmo/msdmo.spec.def
|
$(DLLTOOL) -k -l $@ -d msdmo/msdmo.spec.def
|
||||||
|
|
||||||
|
libmshtml.def: mshtml/mshtml.spec.def
|
||||||
|
$(RM) $@ && $(LN_S) mshtml/mshtml.spec.def $@
|
||||||
|
libmshtml.a: mshtml/mshtml.spec.def
|
||||||
|
$(DLLTOOL) -k -l $@ -d mshtml/mshtml.spec.def
|
||||||
|
|
||||||
libmsi.def: msi/msi.spec.def
|
libmsi.def: msi/msi.spec.def
|
||||||
$(RM) $@ && $(LN_S) msi/msi.spec.def $@
|
$(RM) $@ && $(LN_S) msi/msi.spec.def $@
|
||||||
libmsi.a: msi/msi.spec.def
|
libmsi.a: msi/msi.spec.def
|
||||||
|
@ -1319,6 +1330,7 @@ mapi32/mapi32.spec.def: $(WINEBUILD)
|
||||||
mpr/mpr.spec.def: $(WINEBUILD)
|
mpr/mpr.spec.def: $(WINEBUILD)
|
||||||
msacm/msacm32.spec.def: $(WINEBUILD)
|
msacm/msacm32.spec.def: $(WINEBUILD)
|
||||||
msdmo/msdmo.spec.def: $(WINEBUILD)
|
msdmo/msdmo.spec.def: $(WINEBUILD)
|
||||||
|
mshtml/mshtml.spec.def: $(WINEBUILD)
|
||||||
msi/msi.spec.def: $(WINEBUILD)
|
msi/msi.spec.def: $(WINEBUILD)
|
||||||
msimg32/msimg32.spec.def: $(WINEBUILD)
|
msimg32/msimg32.spec.def: $(WINEBUILD)
|
||||||
msnet32/msnet32.spec.def: $(WINEBUILD)
|
msnet32/msnet32.spec.def: $(WINEBUILD)
|
||||||
|
@ -1436,6 +1448,7 @@ msacm/msacm32.dll$(DLLEXT): msacm
|
||||||
msacm/msadp32/msadp32.acm$(DLLEXT): msacm/msadp32
|
msacm/msadp32/msadp32.acm$(DLLEXT): msacm/msadp32
|
||||||
msdmo/msdmo.dll$(DLLEXT): msdmo
|
msdmo/msdmo.dll$(DLLEXT): msdmo
|
||||||
msacm/msg711/msg711.acm$(DLLEXT): msacm/msg711
|
msacm/msg711/msg711.acm$(DLLEXT): msacm/msg711
|
||||||
|
mshtml/mshtml.dll$(DLLEXT): mshtml
|
||||||
msi/msi.dll$(DLLEXT): msi
|
msi/msi.dll$(DLLEXT): msi
|
||||||
msimg32/msimg32.dll$(DLLEXT): msimg32
|
msimg32/msimg32.dll$(DLLEXT): msimg32
|
||||||
msisys/msisys.ocx$(DLLEXT): msisys
|
msisys/msisys.ocx$(DLLEXT): msisys
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
Makefile
|
||||||
|
mshtml.dll.dbg.c
|
||||||
|
mshtml.spec.c
|
||||||
|
mshtml.spec.def
|
|
@ -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
|
||||||
|
|
||||||
|
@MAKE_DLL_RULES@
|
||||||
|
|
||||||
|
### Dependencies:
|
|
@ -0,0 +1,767 @@
|
||||||
|
/*
|
||||||
|
* 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 <stdarg.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;
|
||||||
|
}
|
|
@ -0,0 +1,198 @@
|
||||||
|
/*
|
||||||
|
* 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 <stdarg.h>
|
||||||
|
|
||||||
|
#include "windef.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(void)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
|
@ -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
|
Loading…
Reference in New Issue