- implements OleCreate --- > This gets Insert->Object in Word2000 as far as OleCreate. Does it help??? Ciao Juergen --- [EMAIL PROTECTED] ... from sunny Berlin
Index: wine/dlls/ole32/ole2stubs.c =================================================================== RCS file: /home/wine/wine/dlls/ole32/ole2stubs.c,v retrieving revision 1.7 diff -u -r1.7 ole2stubs.c --- wine/dlls/ole32/ole2stubs.c 2000/03/08 18:49:36 1.7 +++ wine/dlls/ole32/ole2stubs.c 2000/06/23 22:50:45 @@ -86,12 +86,49 @@ /****************************************************************************** * OleCreate [OLE32.80] + * */ -HRESULT WINAPI OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, - LPSTORAGE pStg, LPVOID* ppvObj) +HRESULT WINAPI OleCreate( + REFCLSID rclsid, + REFIID riid, + DWORD renderopt, + LPFORMATETC pFormatEtc, + LPOLECLIENTSITE pClientSite, + LPSTORAGE pStg, + LPVOID* ppvObj) { - FIXME("(not shown), stub!\n"); - return E_OUTOFMEMORY; + HRESULT hres, hres1; + IUnknown * pUnk = NULL; + + FIXME("\n\t%s\n\t%s stub!\n", debugstr_guid(rclsid), debugstr_guid(riid)); + + if (SUCCEEDED((hres = CoCreateInstance(rclsid, 0, CLSCTX_INPROC_SERVER, riid, +(LPVOID*)&pUnk)))) + { + if (pClientSite) + { + IOleObject * pOE; + IPersistStorage * pPS; + if (SUCCEEDED((hres = IUnknown_QueryInterface( pUnk, &IID_IOleObject, +(LPVOID*)&pOE)))) + { + TRACE("trying to set clientsite %p\n", pClientSite); + hres1 = IOleObject_SetClientSite(pOE, pClientSite); + TRACE("-- result 0x%08lx\n", hres1); + IOleObject_Release(pOE); + } + if (SUCCEEDED((hres = IUnknown_QueryInterface( pUnk, &IID_IPersistStorage, +(LPVOID*)&pPS)))) + { + TRACE("trying to set stg %p\n", pStg); + hres1 = IPersistStorage_InitNew(pPS, pStg); + TRACE("-- result 0x%08lx\n", hres1); + IPersistStorage_Release(pPS); + } + } + } + + *ppvObj = pUnk; + + TRACE("-- %p \n", pUnk); + return hres; } /******************************************************************************