Official docs for WM_PAINT
state that you shouldn't in the very first sentence of the remarks section. Seriously, that should be enough of a reason not to.
As for technical reasons why, I guess this is one of them, taken from BeginPaint
remarks section:
The update region is set by the InvalidateRect or InvalidateRgn function and by the system after sizing, moving, creating, scrolling, or any other operation that affects the client area.
Thus BeginPaint
might not work correctly if you send WM_PAINT
manually.
There might be more reasons/surprises.