BeginPaint not called on WM_PAINT...

Andreas Mohr a.mohr at mailto.de
Tue Sep 25 15:56:01 CDT 2001


Hi all,

the game Undying emits lots and lots of
err:msg:DispatchMessageA BeginPaint not called on WM_PAINT for hwnd 20029!
errors.

This is because it simply does:
0806d2c8:Call user32.DispatchMessageA(406c29b0) ret=1090e313
0806d2c8:Call window proc 0x11001530 (hwnd=00020029,msg=WM_PAINT,wp=00000000,lp=00000000)
0806d2c8:Call user32.ValidateRect(00020029,00000000) ret=11107b57
0806d2c8:Ret  user32.ValidateRect() retval=00000001 ret=11107b57
0806d2c8:Ret  window proc 0x11001530 (hwnd=00020029,msg=WM_PAINT,wp=00000000,lp=00000000) retval=00000000

This seems to be perfectly legal in order to validate the whole window
update rect (NULL) and thus prevent further WM_PAINTs.
(as http://www.intrepidhero.com/articles/wgpfd_errata/part2.html hints)

In short: the wine error message is erroneous in this case.

The Wine check is:
    if (painting && wndPtr &&
        (wndPtr->flags & WIN_NEEDS_BEGINPAINT) && wndPtr->hrgnUpdate)
    {
        ERR("BeginPaint not called on WM_PAINT for hwnd %04x!\n",
            msg->hwnd);

So I assume that either

a)
some flag or so doesn't get updated properly by that ValidateRect()
or

b)
the error message check condition is (slightly) wrong.

Could someone please fix this ?

This happened to #WineHQ nick Thunderbird with latest version of
winex (20010824).

-- 
Andreas Mohr                        Stauferstr. 6, D-71272 Renningen, Germany
Tel. +49 7159 800604                http://home.nexgo.de/andi.mohr/




More information about the wine-devel mailing list