http://bugs.winehq.org/show_bug.cgi?id=21475
--- Comment #2 from Andrew Nguyen arethusa26@gmail.com 2010-01-24 19:28:33 --- Interface {5af21a82-ca6e-11d2-9613-004033a5109d} is indeed registered. Some added traces to OleCreate show that the issue lies in dlls/ole32/ole2.c:2416-2421:
if (SUCCEEDED(hres2)) { DWORD dwConnection; hres = IOleCache_Cache(pOleCache, pFormatEtc, ADVF_PRIMEFIRST, &dwConnection); IOleCache_Release(pOleCache); }
with outcome:
trace:ole:OleCreate IUnknown_QueryInterface hres = 0x0 trace:ole:DataCache_Cache ((nil), 0x2, 0x32e908) trace:ole:OleCreate IOleCache_Cache hres = 0x80070057 trace:ole:OleCreate failure
It seems that the application passes OLERENDER_DRAW for renderopt but NULL for pFormatEtc, causing the IOleCache_Cache call to fail. Hacking the particular code snippet to ignore the return value of IOleCache_Cache allows the palette to be displayed.