http://bugs.winehq.org/show_bug.cgi?id=6168
------- Additional Comments From focht@gmx.net 2007-14-05 14:19 ------- Hello,
another random pick.
--- quote --- unimplemented ole32.OleCreateEmbeddingHelper --- quote ---
Following will get app to work. Beware: this is not a complete implementation, it ignores the EMBDHLP_DELAY case (object creation immediately -> EMBDHLP_CREATENOW). Though it doesnt seem to cause harm.
--- snip dlls/ole32/ole2impl.c --- /*********************************************************************** * OleCreateEmbeddingHelper [OLE32.@] */ HRESULT WINAPI OleCreateEmbeddingHelper( REFCLSID clsid, LPUNKNOWN pUnkOuter, DWORD flags, LPCLASSFACTORY pCF, REFIID riid, LPVOID * ppvObj) { HRESULT hr; IUnknown *pUnk = NULL;
FIXME("(%s, %p, 0x%x, %p, %s, %p)\n", debugstr_guid(clsid), pUnkOuter, flags, pCF, debugstr_guid(riid), ppvObj);
*ppvObj = NULL;
if (!ppvObj) return E_INVALIDARG;
if (pUnkOuter && !IsEqualIID( &IID_IUnknown, riid)) return E_INVALIDARG;
if (!pCF) { if( (flags & (EMBDHLP_INPROC_HANDLER | EMBDHLP_CREATENOW)) == (EMBDHLP_INPROC_HANDLER | EMBDHLP_CREATENOW)) { return OleCreateDefaultHandler(clsid, pUnkOuter, riid, ppvObj); }
/* pCF cannot be NULL for EMBDHLP_INPROC_SERVER */ return E_INVALIDARG; }
hr = IClassFactory_CreateInstance( pCF, pUnkOuter, riid, (LPVOID*) &pUnk); if (SUCCEEDED(hr)) { hr = IUnknown_QueryInterface( pUnk, riid, ppvObj); IUnknown_Release( pUnk); }
return hr; } --- snip dlls/ole32/ole2impl.c ---
and
--- snip dlls/ole32/ole32.spec --- @ stdcall OleCreateEmbeddingHelper(ptr ptr long ptr ptr ptr) --- snip dlls/ole32/ole32.spec ---
Impl done on top of wine-0.9.37-44-g260591f
As mentioned in previous post, make sure you set native comctl32 (separate bug report).
Regards