Hi, I need to able to draw parts of a window into a targetDC. Currently I do this by calling InvalidateRgn() and invoking WM_PAINT directly with my DC as wParam. The problem is that I don't want to clobber the update region of the window. That is, if another thread has called InvalidateRgn() on this window already, I don't want my painting to interfer with that. As far as I know, there is no way to: 1) Lock the window update region 2) Save the window update region 3) Set the window update region to what I want 4) Call WM_PAINT on the update region I just set so the window paints into my DC 5) Reset the update region to its saved state 6) Unlock the window update region 7) Furthermore, if any other thread modifies the Window update region in between steps 1 and 6 it should modify the *saved* update region, not the one I am using for my personal painting. Any ideas on how to accomplish this? This brings up the question. When WM_PAINT is invoked with wParam=0 it calls BeginPaint() which returns a DC having the system clipping region derived from the window update region. The question is, if WM_PAINT is invoked with wParam!=0, does it use the system clipping region of the DC that is passed in or does it still make use of the window update region somehow? Is the update region reset if BeginPaint() is never invoked? Thanks, Gili