http://bugs.winehq.org/show_bug.cgi?id=8919
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #7 from Anastasius Focht focht@gmx.net 2008-01-18 03:36:08 --- Hello,
used current GIT (wine-0.9.53-137-ga9e9673).
First issue is gdiplus ...
--- snip --- wine: Call from 0x7b8414e0 to unimplemented function gdiplus.dll.GdipGetImageEncodersSize, aborting wine: Unhandled page fault on read access to 0x009ad4d8 at address 0x0000:0x0040366e (thread 0009), starting debugger... First chance exception: page fault on read access to 0x009ad4d8 in 32-bit code (0x0040366e). .. --- snip ---
Which leads to message box "Runtime Error 216 at 0040366E" popping up. Use 'winetricks gdiplus' for native override to work around incomplete wine implementation.
Second issue is unimplemented browser/control ready state transitions/notifications. Many apps which use embedded browser control poll ready states (or advise event sinks for async notifications) to check for completion of container/child control load/init state.
--- snip --- 0009:fixme:shdocvw:WebBrowser_get_ReadyState (0x14c060)->(0x34fbc8) 0009:Call ntdll.RtlFreeHeap(00110000,00000000,0016bf98) ret=603e35c0 0009:Ret ntdll.RtlFreeHeap() retval=00000001 ret=603e35c0 0009:Call ole32.GetErrorInfo(00000000,0034fbf0) ret=603e4b18 0009:Ret ole32.GetErrorInfo() retval=00000001 ret=603e4b18 0009:Call ntdll.RtlFreeHeap(00110000,00000000,0016bf68) ret=603e3a4c 0009:Ret ntdll.RtlFreeHeap() retval=00000001 ret=603e3a4c 0009:Call KERNEL32.FormatMessageA(00003200,00000000,80004001,00000000,0034fae0,00000100,00000000) ret=0040d310 0009:Ret KERNEL32.FormatMessageA() retval=00000000 ret=0040d310 0009:Call user32.LoadStringA(00400000,0000feb8,0034f7d8,00000400) ret=004067d6 0009:Ret user32.LoadStringA() retval=0000000e ret=004067d6 0009:Call KERNEL32.RaiseException(0eedfade,00000001,00000007,0034fc4c) ret=00494156 0009:trace:seh:raise_exception code=eedfade flags=1 addr=0x7b8414e0 --- snip ---
You can work around by using this quick-n-dirty hack:
--- snip hack --- diff --git a/dlls/shdocvw/webbrowser.c b/dlls/shdocvw/webbrowser.c index 55f1620..01b3672 100644 --- a/dlls/shdocvw/webbrowser.c +++ b/dlls/shdocvw/webbrowser.c @@ -732,7 +732,9 @@ static HRESULT WINAPI WebBrowser_get_ReadyState(IWebBrowser2 *iface, READYSTATE { WebBrowser *This = WEBBROWSER_THIS(iface); FIXME("(%p)->(%p)\n", This, lpReadyState); - return E_NOTIMPL; + + *lpReadyState = READYSTATE_COMPLETE; + return S_OK; }
static HRESULT WINAPI WebBrowser_get_Offline(IWebBrowser2 *iface, VARIANT_BOOL *pbOffline) --- snip hack ---
I used explicit READYSTATE_COMPLETE instead of READYSTATE_LOADED for browser to mimic behavior of many controls which do not differentiate between "loaded" and any other state (such as gui controls that load all their properties and have no external data to retrieve). Child controls do not need to support this property at all so the container always assumes READYSTATE_COMPLETE.
With the hack applied the app starts and shows main gui. One can load default project. Though there is some mshtml component error message box popping up which can be dismissed (file new bug reports for that).
Of course the browser ready state property changes/transitions should be properly fleshed out some day...
Regards