Handle WM_PRINTCLIENT.
Don't use SelectClipRgn in WM_PRINTCLIENT.
diff --git a/dlls/comctl32/animate.c b/dlls/comctl32/animate.c
index 6d06d22..3c2c648 100644
--- a/dlls/comctl32/animate.c
+++ b/dlls/comctl32/animate.c
@@ -899,6 +899,7 @@
case WM_TIMER:
return ANIMATE_Timer(infoPtr);
+ case WM_PRINTCLIENT:
case WM_PAINT:
{
/* the animation isn't playing, or has not decompressed
diff --git a/dlls/comctl32/datetime.c b/dlls/comctl32/datetime.c
index f024207..83d53af 100644
--- a/dlls/comctl32/datetime.c
+++ b/dlls/comctl32/datetime.c
@@ -1284,6 +1284,7 @@
case WM_GETDLGCODE:
return DLGC_WANTARROWS | DLGC_WANTCHARS;
+ case WM_PRINTCLIENT:
case WM_PAINT:
return DATETIME_Paint (infoPtr, (HDC)wParam);
diff --git a/dlls/comctl32/header.c b/dlls/comctl32/header.c
index ae611b9..522aa81 100644
--- a/dlls/comctl32/header.c
+++ b/dlls/comctl32/header.c
@@ -1717,6 +1717,7 @@
case WM_THEMECHANGED:
return HEADER_ThemeChanged (hwnd);
+ case WM_PRINTCLIENT:
case WM_PAINT:
return HEADER_Paint (hwnd, wParam);
diff --git a/dlls/comctl32/hotkey.c b/dlls/comctl32/hotkey.c
index ab8d746..6359164 100644
--- a/dlls/comctl32/hotkey.c
+++ b/dlls/comctl32/hotkey.c
@@ -516,6 +516,7 @@
case WM_NCCREATE:
return HOTKEY_NCCreate (hwnd, (LPCREATESTRUCTW)lParam);
+ case WM_PRINTCLIENT:
case WM_PAINT:
HOTKEY_Paint(infoPtr, (HDC)wParam);
return 0;
diff --git a/dlls/comctl32/monthcal.c b/dlls/comctl32/monthcal.c
index 4214eed..340b681 100644
--- a/dlls/comctl32/monthcal.c
+++ b/dlls/comctl32/monthcal.c
@@ -2007,6 +2007,7 @@
case WM_LBUTTONUP:
return MONTHCAL_LButtonUp(infoPtr, lParam);
+ case WM_PRINTCLIENT:
case WM_PAINT:
return MONTHCAL_Paint(infoPtr, wParam);
diff --git a/dlls/comctl32/pager.c b/dlls/comctl32/pager.c
index 971da4e..cd25159 100644
--- a/dlls/comctl32/pager.c
+++ b/dlls/comctl32/pager.c
@@ -34,6 +34,8 @@
* PGS_DRAGNDROP
* Notifications:
* PGN_HOTITEMCHANGE
+ * Messages:
+ * WM_PRINT and/or WM_PRINTCLIENT
*
* TESTING:
* Tested primarily with the controlspy Pager application.
diff --git a/dlls/comctl32/progress.c b/dlls/comctl32/progress.c
index a6e20e5..eb0b11a 100644
--- a/dlls/comctl32/progress.c
+++ b/dlls/comctl32/progress.c
@@ -627,6 +627,7 @@
case WM_SETFONT:
return (LRESULT)PROGRESS_SetFont(infoPtr, (HFONT)wParam, (BOOL)lParam);
+ case WM_PRINTCLIENT:
case WM_PAINT:
return PROGRESS_Paint (infoPtr, (HDC)wParam);
diff --git a/dlls/comctl32/propsheet.c b/dlls/comctl32/propsheet.c
index 783ae3e..08c55b8 100644
--- a/dlls/comctl32/propsheet.c
+++ b/dlls/comctl32/propsheet.c
@@ -3455,6 +3455,7 @@
return TRUE;
}
+ case WM_PRINTCLIENT:
case WM_PAINT:
PROPSHEET_Paint(hwnd, (HDC)wParam);
return TRUE;
diff --git a/dlls/comctl32/rebar.c b/dlls/comctl32/rebar.c
index 3f167ba..61806f4 100644
--- a/dlls/comctl32/rebar.c
+++ b/dlls/comctl32/rebar.c
@@ -50,7 +50,6 @@
* - WM_LBUTTONDBLCLK
* - WM_MEASUREITEM
* - WM_PALETTECHANGED
- * - WM_PRINTCLIENT
* - WM_QUERYNEWPALETTE
* - WM_RBUTTONDOWN
* - WM_RBUTTONUP
@@ -4768,11 +4767,11 @@
case WM_NOTIFYFORMAT:
return REBAR_NotifyFormat (infoPtr, wParam, lParam);
+ case WM_PRINTCLIENT:
case WM_PAINT:
return REBAR_Paint (infoPtr, wParam, lParam);
/* case WM_PALETTECHANGED: supported according to ControlSpy */
-/* case WM_PRINTCLIENT: supported according to ControlSpy */
/* case WM_QUERYNEWPALETTE:supported according to ControlSpy */
/* case WM_RBUTTONDOWN: supported according to ControlSpy */
/* case WM_RBUTTONUP: supported according to ControlSpy */
diff --git a/dlls/comctl32/status.c b/dlls/comctl32/status.c
index c730400..7c86815 100644
--- a/dlls/comctl32/status.c
+++ b/dlls/comctl32/status.c
@@ -1342,6 +1342,7 @@
case WM_NOTIFYFORMAT:
return STATUSBAR_NotifyFormat(infoPtr, (HWND)wParam, (INT)lParam);
+ case WM_PRINTCLIENT:
case WM_PAINT:
return STATUSBAR_WMPaint (infoPtr, (HDC)wParam);
diff --git a/dlls/comctl32/syslink.c b/dlls/comctl32/syslink.c
index 12a0605..084a567 100644
--- a/dlls/comctl32/syslink.c
+++ b/dlls/comctl32/syslink.c
@@ -1463,6 +1463,7 @@
return DefWindowProcW( hwnd, message, wParam, lParam );
switch(message) {
+ case WM_PRINTCLIENT:
case WM_PAINT:
return SYSLINK_Paint (infoPtr, (HDC)wParam);
diff --git a/dlls/comctl32/tab.c b/dlls/comctl32/tab.c
index e36ddf6..dd9dbe5 100644
--- a/dlls/comctl32/tab.c
+++ b/dlls/comctl32/tab.c
@@ -3283,6 +3283,7 @@
case WM_MOUSEMOVE:
return TAB_MouseMove (infoPtr, wParam, lParam);
+ case WM_PRINTCLIENT:
case WM_PAINT:
return TAB_Paint (infoPtr, (HDC)wParam);
diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c
index cf6a03b..64be7ec 100644
--- a/dlls/comctl32/toolbar.c
+++ b/dlls/comctl32/toolbar.c
@@ -7234,6 +7234,7 @@
case WM_NOTIFYFORMAT:
return TOOLBAR_NotifyFormat (infoPtr, wParam, lParam);
+ case WM_PRINTCLIENT:
case WM_PAINT:
return TOOLBAR_Paint (hwnd, wParam);
diff --git a/dlls/comctl32/tooltips.c b/dlls/comctl32/tooltips.c
index e641aaa..b738a4e 100644
--- a/dlls/comctl32/tooltips.c
+++ b/dlls/comctl32/tooltips.c
@@ -2782,6 +2782,7 @@
case WM_NOTIFYFORMAT:
return TOOLTIPS_NotifyFormat (hwnd, wParam, lParam);
+ case WM_PRINTCLIENT:
case WM_PAINT:
return TOOLTIPS_Paint (hwnd, wParam, lParam);
diff --git a/dlls/comctl32/trackbar.c b/dlls/comctl32/trackbar.c
index 5b113ec..7094e04 100644
--- a/dlls/comctl32/trackbar.c
+++ b/dlls/comctl32/trackbar.c
@@ -1878,6 +1878,7 @@
case WM_MOUSEMOVE:
return TRACKBAR_MouseMove (infoPtr, wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
+ case WM_PRINTCLIENT:
case WM_PAINT:
return TRACKBAR_Paint (infoPtr, (HDC)wParam);
diff --git a/dlls/comctl32/treeview.c b/dlls/comctl32/treeview.c
index e6cd167..c148d83 100644
--- a/dlls/comctl32/treeview.c
+++ b/dlls/comctl32/treeview.c
@@ -5629,11 +5629,10 @@
case WM_NOTIFYFORMAT:
return TREEVIEW_NotifyFormat(infoPtr, (HWND)wParam, (UINT)lParam);
+ case WM_PRINTCLIENT:
case WM_PAINT:
return TREEVIEW_Paint(infoPtr, wParam);
- /* WM_PRINTCLIENT */
-
case WM_RBUTTONDOWN:
return TREEVIEW_RButtonDown(infoPtr, lParam);
diff --git a/dlls/comctl32/updown.c b/dlls/comctl32/updown.c
index d889881..cda2668 100644
--- a/dlls/comctl32/updown.c
+++ b/dlls/comctl32/updown.c
@@ -934,6 +934,7 @@
return UPDOWN_KeyPressed(infoPtr, (int)wParam);
break;
+ case WM_PRINTCLIENT:
case WM_PAINT:
return UPDOWN_Paint (infoPtr, (HDC)wParam);
diff --git a/dlls/user/button.c b/dlls/user/button.c
index a723a84..5d56db7 100644
--- a/dlls/user/button.c
+++ b/dlls/user/button.c
@@ -279,6 +279,7 @@
}
return 1;
+ case WM_PRINTCLIENT:
case WM_PAINT:
if (btnPaintFunc[btn_type])
{
@@ -777,7 +778,6 @@
{
RECT rc, focus_rect, r;
UINT dtFlags, uState;
- HRGN hRgn;
HPEN hOldPen;
HBRUSH hOldBrush;
INT oldBkMode;
@@ -834,16 +834,13 @@
if (pushedState)
OffsetRect(&r, 1, 1);
- hRgn = CreateRectRgn(rc.left, rc.top, rc.right, rc.bottom);
- SelectClipRgn(hDC, hRgn);
+ IntersectClipRect(hDC, rc.left, rc.top, rc.right, rc.bottom);
oldTxtColor = SetTextColor( hDC, GetSysColor(COLOR_BTNTEXT) );
BUTTON_DrawLabel(hwnd, hDC, dtFlags, &r);
SetTextColor( hDC, oldTxtColor );
- SelectClipRgn(hDC, 0);
- DeleteObject(hRgn);
if (state & BUTTON_HASFOCUS)
{
@@ -868,7 +865,6 @@
HBRUSH hBrush;
int delta;
UINT dtFlags;
- HRGN hRgn;
HFONT hFont;
LONG state = get_button_state( hwnd );
LONG style = GetWindowLongW( hwnd, GWL_STYLE );
@@ -970,9 +966,8 @@
if (dtFlags == (UINT)-1L) /* Noting to draw */
return;
- hRgn = CreateRectRgn(client.left, client.top, client.right, client.bottom);
- SelectClipRgn(hDC, hRgn);
- DeleteObject(hRgn);
+
+ IntersectClipRect(hDC, client.left, client.top, client.right, client.bottom);
if (action == ODA_DRAWENTIRE)
BUTTON_DrawLabel(hwnd, hDC, dtFlags, &rtext);
@@ -986,7 +981,6 @@
IntersectRect(&rtext, &rtext, &client);
DrawFocusRect( hDC, &rtext );
}
- SelectClipRgn(hDC, 0);
}
diff --git a/dlls/user/edit.c b/dlls/user/edit.c
index 28d8032..2d92e94 100644
--- a/dlls/user/edit.c
+++ b/dlls/user/edit.c
@@ -920,6 +920,7 @@
result = EDIT_WM_MouseMove(es, (short)LOWORD(lParam), (short)HIWORD(lParam));
break;
+ case WM_PRINTCLIENT:
case WM_PAINT:
EDIT_WM_Paint(es, (HDC)wParam);
break;
diff --git a/dlls/user/listbox.c b/dlls/user/listbox.c
index 167effd..a7f9687 100644
--- a/dlls/user/listbox.c
+++ b/dlls/user/listbox.c
@@ -3013,6 +3013,7 @@
case WM_GETDLGCODE:
return DLGC_WANTARROWS | DLGC_WANTCHARS;
+ case WM_PRINTCLIENT:
case WM_PAINT:
{
PAINTSTRUCT ps;
diff --git a/dlls/user/static.c b/dlls/user/static.c
index 65a1249..365687c 100644
--- a/dlls/user/static.c
+++ b/dlls/user/static.c
@@ -282,6 +282,7 @@
else return unicode ? DefWindowProcW(hwnd, uMsg, wParam, lParam) :
DefWindowProcA(hwnd, uMsg, wParam, lParam);
+ case WM_PRINTCLIENT:
case WM_PAINT:
{
PAINTSTRUCT ps;