- ::FillRect(hdc, &rect, hBrush);
- ::DeleteObject(hBrush);
- ::SetMapMode(hdc, mode);
+ // 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;
+}
+
+WXHBRUSH wxControl::MSWControlColor(WXHDC pDC, WXHWND hWnd)
+{
+ if ( HasTransparentBackground() )
+ ::SetBkMode((HDC)pDC, TRANSPARENT);
+
+ // don't pass any background colour to DoMSWControlColor(), our own
+ // background colour will be used by it only if it is set, otherwise the
+ // defaults will be used
+ return DoMSWControlColor(pDC, wxColour(), hWnd);
+}
+
+WXHBRUSH wxControl::MSWControlColorDisabled(WXHDC pDC)
+{
+ return DoMSWControlColor(pDC,
+ wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE),
+ GetHWND());