comctl32: Send a WM_CTLCOLORSTATIC message and erase the background while painting.

This commit is contained in:
Francois Gouget 2011-09-26 16:22:40 +02:00 committed by Alexandre Julliard
parent e6368a040c
commit 76b6c8f517
1 changed files with 10 additions and 19 deletions

View File

@ -832,6 +832,7 @@ static LRESULT SYSLINK_Draw (const SYSLINK_INFO *infoPtr, HDC hdc)
PDOC_ITEM Current;
HFONT hOldFont;
COLORREF OldTextColor, OldBkColor;
HBRUSH hBrush;
hOldFont = SelectObject(hdc, infoPtr->Font);
OldTextColor = SetTextColor(hdc, infoPtr->TextColor);
@ -843,6 +844,13 @@ static LRESULT SYSLINK_Draw (const SYSLINK_INFO *infoPtr, HDC hdc)
if(rc.right < 0 || rc.bottom < 0) return 0;
hBrush = (HBRUSH)SendMessageW(infoPtr->Notify, WM_CTLCOLORSTATIC,
(WPARAM)hdc, (LPARAM)infoPtr->Self);
if (!hBrush)
hBrush = CreateSolidBrush(infoPtr->BackColor);
FillRect(hdc, &rc, hBrush);
DeleteObject(hBrush);
for(Current = infoPtr->Items; Current != NULL; Current = Current->Next)
{
int n;
@ -910,23 +918,6 @@ static LRESULT SYSLINK_Paint (const SYSLINK_INFO *infoPtr, HDC hdcParam)
return 0;
}
/***********************************************************************
* SYSLINK_EraseBkgnd
* Handles the WM_ERASEBKGND message.
*/
static LRESULT SYSLINK_EraseBkgnd (const SYSLINK_INFO *infoPtr, HDC hdc)
{
HBRUSH hbr;
RECT r;
GetClientRect(infoPtr->Self, &r);
hbr = CreateSolidBrush(infoPtr->BackColor);
FillRect(hdc, &r, hbr);
DeleteObject(hbr);
return 1;
}
/***********************************************************************
* SYSLINK_SetFont
* Set new Font for the SysLink control.
@ -1572,7 +1563,7 @@ static LRESULT WINAPI SysLinkWindowProc(HWND hwnd, UINT message,
return SYSLINK_Paint (infoPtr, (HDC)wParam);
case WM_ERASEBKGND:
return SYSLINK_EraseBkgnd(infoPtr, (HDC)wParam);
return 0;
case WM_SETCURSOR:
{
@ -1752,7 +1743,7 @@ static LRESULT WINAPI SysLinkWindowProc(HWND hwnd, UINT message,
infoPtr->HasFocus = FALSE;
infoPtr->MouseDownID = -1;
infoPtr->TextColor = comctl32_color.clrWindowText;
infoPtr->LinkColor = comctl32_color.clrHotTrackingColor;
infoPtr->LinkColor = comctl32_color.clrHighlight;
infoPtr->VisitedColor = comctl32_color.clrHighlight;
infoPtr->BackColor = infoPtr->Style & LWS_TRANSPARENT ?
comctl32_color.clrWindow : comctl32_color.clrBtnFace;