Handle wParam in WM_PAINT properly: if non-null, it is the hdc we are supposed to use to draw into.
diff --git a/dlls/comctl32/propsheet.c b/dlls/comctl32/propsheet.c index 87a94f9..fc3ed07 100644 --- a/dlls/comctl32/propsheet.c +++ b/dlls/comctl32/propsheet.c
@@ -3077,7 +3077,7 @@ /****************************************************************************** * PROPSHEET_Paint */ -static LRESULT PROPSHEET_Paint(HWND hwnd) +static LRESULT PROPSHEET_Paint(HWND hwnd, HDC hdcParam) { PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwnd, PropSheetInfoStr); PAINTSTRUCT ps; @@ -3092,7 +3092,7 @@ WCHAR szBuffer[256]; int nLength; - hdc = BeginPaint(hwnd, &ps); + hdc = hdcParam ? hdcParam : BeginPaint(hwnd, &ps); if (!hdc) return 1; hdcSrc = CreateCompatibleDC(0); @@ -3266,7 +3266,7 @@ DeleteDC(hdcSrc); - EndPaint(hwnd, &ps); + if (!hdcParam) EndPaint(hwnd, &ps); return 0; } @@ -3396,7 +3396,7 @@ } case WM_PAINT: - PROPSHEET_Paint(hwnd); + PROPSHEET_Paint(hwnd, (HDC)wParam); return TRUE; case WM_DESTROY:
diff --git a/dlls/comctl32/syslink.c b/dlls/comctl32/syslink.c index 5f359d8..703d940 100644 --- a/dlls/comctl32/syslink.c +++ b/dlls/comctl32/syslink.c
@@ -879,13 +879,14 @@ * SYSLINK_Paint * Handles the WM_PAINT message. */ -static LRESULT SYSLINK_Paint (SYSLINK_INFO *infoPtr) +static LRESULT SYSLINK_Paint (SYSLINK_INFO *infoPtr, HDC hdcParam) { HDC hdc; PAINTSTRUCT ps; - hdc = BeginPaint (infoPtr->Self, &ps); + + hdc = hdcParam ? hdcParam : BeginPaint (infoPtr->Self, &ps); SYSLINK_Draw (infoPtr, hdc); - EndPaint (infoPtr->Self, &ps); + if (!hdcParam) EndPaint (infoPtr->Self, &ps); return 0; } @@ -1466,7 +1467,7 @@ switch(message) { case WM_PAINT: - return SYSLINK_Paint (infoPtr); + return SYSLINK_Paint (infoPtr, (HDC)wParam); case WM_SETCURSOR: {