fixed background appearance for the controls with changed foreground colour

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31069 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2004-12-19 20:15:43 +00:00
parent eb96212b6c
commit d1a47dfe23
2 changed files with 12 additions and 22 deletions

View File

@ -120,18 +120,12 @@ protected:
virtual WXHBRUSH MSWControlColor(WXHDC pDC);
// call this from the derived class MSWControlColor() if you want to show
// the control greyed out
// the control greyed out (and opaque)
WXHBRUSH MSWControlColorDisabled(WXHDC pDC);
// call this from the derived class MSWControlColor() if you want to always
// paint the background (as all opaque controls do)
WXHBRUSH MSWControlColorSolid(WXHDC pDC)
{
return MSWControlColorSolid(pDC, GetBackgroundColour());
}
// common part of the 3 methods above
WXHBRUSH MSWControlColorSolid(WXHDC pDC, wxColour colBg);
WXHBRUSH MSWControlColorSolid(WXHDC pDC, wxColour colBg = wxNullColour);
// another WM_CTLCOLOR-related function: override this to return the brush
// which should be used to paint the control background by default

View File

@ -337,34 +337,30 @@ WXHBRUSH wxControl::MSWControlColorSolid(WXHDC pDC, wxColour colBg)
if ( m_hasFgCol )
{
::SetTextColor(hdc, wxColourToRGB(GetForegroundColour()));
if ( !colBg.Ok() )
colBg = GetBackgroundColour();
}
// use the background colour override if a valid colour is given
WXHBRUSH hbr;
if ( colBg.Ok() )
{
::SetBkColor(hdc, wxColourToRGB(colBg));
// draw children with the same colour as the parent
wxBrush *brush = wxTheBrushList->FindOrCreateBrush(colBg, wxSOLID);
return (WXHBRUSH)brush->GetResourceHandle();
hbr = (WXHBRUSH)brush->GetResourceHandle();
}
else // use our own background colour and recurse upwards if necessary
{
hbr = MSWGetBgBrush(pDC);
}
return 0;
return hbr;
}
WXHBRUSH wxControl::MSWControlColor(WXHDC pDC)
{
WXHBRUSH hbr = MSWControlColorSolid(pDC, m_hasBgCol ? m_backgroundColour
: wxNullColour);
if ( hbr )
return hbr;
::SetBkMode((HDC)pDC, TRANSPARENT);
hbr = MSWGetBgBrush(pDC);
return hbr ? hbr : MSWGetDefaultBgBrush();
return MSWControlColorSolid(pDC);
}
WXHBRUSH wxControl::MSWControlColorDisabled(WXHDC pDC)