http://bugs.winehq.org/show_bug.cgi?id=7270
------- Additional Comments From madewokherd@gmail.com 2007-08-02 14:43 ------- I've downloaded/run the program. I'll offer my guess at what the problem is.
fixme:ddraw:IDirectDrawImpl_SetCooperativeLevel (0x128bbd0)->(0x1002e,00000008)
The program uses SetCooperativeLevel with an hwnd of 1002e.
trace:ddraw:DirectDrawCreateClipper (00000000,0x788718,(nil)) --- trace:ddraw:IDirectDrawClipperImpl_SetHwnd (0x1eee20)->(0x00000000,0x000101ec)
Then it creates a clipper, sets it to use a different hwnd from the one it bassed to SetCooperativeLevel. If it uses SetClipper to attach that clipper to the primary surface (which I assume it does, but I haven't checked), ddraw should now draw to the hwnd that's set on the clipper. However, wine continues drawing to the window it was given in SetCooperativeLevel (which was never correct to begin with--it should've been drawing to the screen), which is the wrong one.
That patch won't solve this problem. If anything it'll make things worse by making ddraw draw to the whole screen instead of the application's client area.
The only way to properly fix this is to implement clippers, but a horribly broken hack that sets ddraw_window any time you call SetHWND on a clipper may be enough to get this one app working.