Alexandre Julliard:
I think GetClipBox is correct, the problem is
that the WM_ERASEBKGND
handler should not be using it, but
GetClientRect. You can try this:
Hello Alexandre,
thank you for your reccomendation. Unfortunately the DefWindowProc
improvement does not help, because the default handler newer gets
called in my app. The application (Progress _prowin.exe version 7)
uses custom dialog boxes (forms) and also custom controls. The
controls handle WM_ERASEBKGND themeselves. I have no access to
the sources. What I know about GetClipRect, I know from the trace. I agree
that your method (GetClientRect in the handler) is much better, but I
cannot use it.
I also agree that Windows should return the parent area in GetClipBox
as Wine does. Unfortunalelly, the Windows do not do that while the
_prowin.exe depends on it. I enclose a simple C example
which I hacked to demonstrate this. The example displays two red
children in a white parent. The value returned by GetClipBox is
wsprintf-ed.
If you run the binary in the Windows, you will see two properly sized
red rectangles on a white background. If you run the same binary in
Wine, you will see only one large red child but no white parent
background. If either the CS_PARENTDC or WS_CLIPSIBLINGS gets removed
from my example, both Windows and Wine give identical results.
Regards
Ladislav Sladecek