win32: teach WM_CTLCOLORMSGBOX..WM_CTLCOLORSTATIC to handle clDefault

git-svn-id: trunk@28113 -
This commit is contained in:
paul 2010-11-07 13:04:10 +00:00
parent bc8b1d10f7
commit 48a20553d3

View File

@ -229,6 +229,7 @@ var
Flags: dword;
WindowDC: HDC;
WindowPlacement: TWINDOWPLACEMENT;
WindowColor: TColor;
LMScroll: TLMScroll; // used by WM_HSCROLL
LMKey: TLMKey; // used by WM_KEYDOWN WM_KEYUP
@ -1355,8 +1356,19 @@ begin
if ChildWinControl <> nil then
begin
Windows.SetTextColor(WindowDC, Windows.COLORREF(ColorToRGB(ChildWinControl.Font.Color)));
Windows.SetBkColor(WindowDC, Windows.COLORREF(ColorToRGB(ChildWinControl.Brush.Color)));
LMessage.Result := LResult(ChildWinControl.Brush.Reference.Handle);
WindowColor := ChildWinControl.Brush.Color;
if WindowColor = clDefault then
begin
WindowColor := TWSWinControlClass(ChildWinControl.WidgetSetClass).GetDefaultColor(ChildWinControl);
Windows.SetBkColor(WindowDC, Windows.COLORREF(ColorToRGB(WindowColor)));
if IsSysColor(WindowColor) then
LMessage.Result := LResult(GetSysColorBrush(SysColorToSysColorIndex(WindowColor)));
end
else
begin
Windows.SetBkColor(WindowDC, Windows.COLORREF(ColorToRGB(WindowColor)));
LMessage.Result := LResult(ChildWinControl.Brush.Reference.Handle);
end;
//DebugLn(['WindowProc ', ChildWinControl.Name, ' Brush: ', LMessage.Result]);
// Override default handling
WinProcess := false;