All standard window controls should have CS_PARENTDC, but should still
clip to the control window.
This commit is contained in:
parent
278b3bcdbc
commit
fcd352152f
|
@ -921,6 +921,8 @@ static void OB_Paint( WND *wndPtr, HDC hDC, WORD action )
|
||||||
{
|
{
|
||||||
BUTTONINFO *infoPtr = (BUTTONINFO *)wndPtr->wExtra;
|
BUTTONINFO *infoPtr = (BUTTONINFO *)wndPtr->wExtra;
|
||||||
DRAWITEMSTRUCT dis;
|
DRAWITEMSTRUCT dis;
|
||||||
|
HRGN clipRegion;
|
||||||
|
RECT clipRect;
|
||||||
|
|
||||||
dis.CtlType = ODT_BUTTON;
|
dis.CtlType = ODT_BUTTON;
|
||||||
dis.CtlID = wndPtr->wIDmenu;
|
dis.CtlID = wndPtr->wIDmenu;
|
||||||
|
@ -934,9 +936,21 @@ static void OB_Paint( WND *wndPtr, HDC hDC, WORD action )
|
||||||
dis.itemData = 0;
|
dis.itemData = 0;
|
||||||
GetClientRect( wndPtr->hwndSelf, &dis.rcItem );
|
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 ) );
|
SetBkColor( hDC, GetSysColor( COLOR_BTNFACE ) );
|
||||||
|
|
||||||
SendMessageA( GetParent(wndPtr->hwndSelf), WM_DRAWITEM,
|
SendMessageA( GetParent(wndPtr->hwndSelf), WM_DRAWITEM,
|
||||||
wndPtr->wIDmenu, (LPARAM)&dis );
|
wndPtr->wIDmenu, (LPARAM)&dis );
|
||||||
|
|
||||||
|
SelectClipRgn(hDC, clipRegion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue