All standard window controls should have CS_PARENTDC, but should still
clip to the control window.
diff --git a/controls/button.c b/controls/button.c
index 51bd46c..0a14594 100644
--- a/controls/button.c
+++ b/controls/button.c
@@ -921,6 +921,8 @@
{
BUTTONINFO *infoPtr = (BUTTONINFO *)wndPtr->wExtra;
DRAWITEMSTRUCT dis;
+ HRGN clipRegion;
+ RECT clipRect;
dis.CtlType = ODT_BUTTON;
dis.CtlID = wndPtr->wIDmenu;
@@ -934,9 +936,21 @@
dis.itemData = 0;
GetClientRect( wndPtr->hwndSelf, &dis.rcItem );
+ clipRegion = CreateRectRgnIndirect(&dis.rcItem);
+ if (GetClipRgn(hDC, clipRegion) != 1)
+ {
+ DeleteObject(clipRegion);
+ clipRegion=(HRGN)NULL;
+ }
+ clipRect = dis.rcItem;
+ DPtoLP(hDC, (LPPOINT) &clipRect, 2);
+ IntersectClipRect(hDC, clipRect.left, clipRect.top, clipRect.right, clipRect.bottom);
+
SetBkColor( hDC, GetSysColor( COLOR_BTNFACE ) );
SendMessageA( GetParent(wndPtr->hwndSelf), WM_DRAWITEM,
wndPtr->wIDmenu, (LPARAM)&dis );
+
+ SelectClipRgn(hDC, clipRegion);
}