From 76b6c8f5170f1f8d95ad38febc8c8cb1b606f067 Mon Sep 17 00:00:00 2001 From: Francois Gouget Date: Mon, 26 Sep 2011 16:22:40 +0200 Subject: [PATCH] comctl32: Send a WM_CTLCOLORSTATIC message and erase the background while painting. --- dlls/comctl32/syslink.c | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/dlls/comctl32/syslink.c b/dlls/comctl32/syslink.c index 01d638c2526..b2dfdad8efe 100644 --- a/dlls/comctl32/syslink.c +++ b/dlls/comctl32/syslink.c @@ -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;