return attrs;
}
-// another version for the "composite", i.e. non simple controls
-/* static */ wxVisualAttributes
-wxControl::GetCompositeControlsDefaultAttributes(wxWindowVariant WXUNUSED(variant))
-{
- wxVisualAttributes attrs;
- attrs.font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
- attrs.colFg = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
- attrs.colBg = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
-
- return attrs;
-}
-
// ----------------------------------------------------------------------------
// message handling
// ----------------------------------------------------------------------------
WXHBRUSH hbr = 0;
if ( !colBg.Ok() )
{
- hbr = MSWGetBgBrush(pDC, hWnd);
+ if ( wxWindow *win = wxFindWinFromHandle(hWnd) )
+ hbr = MSWGetBgBrush(pDC, win);
// if the control doesn't have any bg colour, foreground colour will be
// ignored as the return value would be 0 -- so forcefully give it a
colBg = GetBackgroundColour();
}
- // use the background colour override if a valid colour is given
+ // use the background colour override if a valid colour is given: this is
+ // used when the control is disabled to grey it out and also if colBg was
+ // set just above
if ( colBg.Ok() )
{
- ::SetBkColor(hdc, wxColourToRGB(colBg));
-
- // draw children with the same colour as the parent
wxBrush *brush = wxTheBrushList->FindOrCreateBrush(colBg);
hbr = (WXHBRUSH)brush->GetResourceHandle();
}
::SetTextColor(hdc, wxColourToRGB(GetForegroundColour()));
}
+ // finally also set the background colour for text drawing: without this,
+ // the text in an edit control is drawn using the default background even
+ // if we return a valid brush
+ if ( colBg.IsOk() || m_hasBgCol )
+ {
+ if ( !colBg.IsOk() )
+ colBg = GetBackgroundColour();
+
+ ::SetBkColor(hdc, wxColourToRGB(colBg));
+ }
+
return hbr;
}