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/winemp3/Makefile
|
||||
dlls/msdmo/Makefile
|
||||
dlls/mshtml/Makefile
|
||||
dlls/msi/Makefile
|
||||
dlls/msimg32/Makefile
|
||||
dlls/msisys/Makefile
|
||||
|
|
|
@ -58,6 +58,7 @@ BASEDIRS = \
|
|||
msacm/msg711 \
|
||||
msacm/winemp3 \
|
||||
msdmo \
|
||||
mshtml \
|
||||
msi \
|
||||
msimg32 \
|
||||
msisys \
|
||||
|
@ -248,6 +249,7 @@ SYMLINKS = \
|
|||
msadp32.acm$(DLLEXT) \
|
||||
msdmo.dll$(DLLEXT) \
|
||||
msg711.acm$(DLLEXT) \
|
||||
mshtml.dll$(DLLEXT) \
|
||||
msi.dll$(DLLEXT) \
|
||||
msimg32.dll$(DLLEXT) \
|
||||
msisys.ocx$(DLLEXT) \
|
||||
|
@ -484,6 +486,9 @@ msdmo.dll$(DLLEXT): msdmo/msdmo.dll$(DLLEXT)
|
|||
msg711.acm$(DLLEXT): 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)
|
||||
$(RM) $@ && $(LN_S) msi/msi.dll$(DLLEXT) $@
|
||||
|
||||
|
@ -724,6 +729,7 @@ IMPORT_LIBS = \
|
|||
libmpr \
|
||||
libmsacm32 \
|
||||
libmsdmo \
|
||||
libmshtml \
|
||||
libmsi \
|
||||
libmsimg32 \
|
||||
libmsnet32 \
|
||||
|
@ -1000,6 +1006,11 @@ libmsdmo.def: msdmo/msdmo.spec.def
|
|||
libmsdmo.a: 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
|
||||
$(RM) $@ && $(LN_S) msi/msi.spec.def $@
|
||||
libmsi.a: msi/msi.spec.def
|
||||
|
@ -1319,6 +1330,7 @@ mapi32/mapi32.spec.def: $(WINEBUILD)
|
|||
mpr/mpr.spec.def: $(WINEBUILD)
|
||||
msacm/msacm32.spec.def: $(WINEBUILD)
|
||||
msdmo/msdmo.spec.def: $(WINEBUILD)
|
||||
mshtml/mshtml.spec.def: $(WINEBUILD)
|
||||
msi/msi.spec.def: $(WINEBUILD)
|
||||
msimg32/msimg32.spec.def: $(WINEBUILD)
|
||||
msnet32/msnet32.spec.def: $(WINEBUILD)
|
||||
|
@ -1436,6 +1448,7 @@ msacm/msacm32.dll$(DLLEXT): msacm
|
|||
msacm/msadp32/msadp32.acm$(DLLEXT): msacm/msadp32
|
||||
msdmo/msdmo.dll$(DLLEXT): msdmo
|
||||
msacm/msg711/msg711.acm$(DLLEXT): msacm/msg711
|
||||
mshtml/mshtml.dll$(DLLEXT): mshtml
|
||||
msi/msi.dll$(DLLEXT): msi
|
||||
msimg32/msimg32.dll$(DLLEXT): msimg32
|
||||
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