- ::SetBkColor(hdc, wxColourToRGB(colBack));
- ::SetTextColor(hdc, wxColourToRGB(GetForegroundColour()));
+ // 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
+ // non default background brush in this case
+ if ( !hbr && m_hasFgCol )
+ colBg = GetBackgroundColour();
+ }
+
+ // use the background colour override if a valid colour is given
+ if ( colBg.Ok() )
+ {
+ ::SetBkColor(hdc, wxColourToRGB(colBg));
+
+ // draw children with the same colour as the parent
+ wxBrush *brush = wxTheBrushList->FindOrCreateBrush(colBg, wxSOLID);
+
+ hbr = (WXHBRUSH)brush->GetResourceHandle();
+
+ // if we use custom background, we should set foreground ourselves too
+ if ( !m_hasFgCol )
+ {
+ ::SetTextColor(hdc, ::GetSysColor(COLOR_WINDOWTEXT));
+ }
+ //else: already set above
+ }