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:
     {