diff --git a/include/wx/msw/control.h b/include/wx/msw/control.h index 574d84a74b..c3bd297ea4 100644 --- a/include/wx/msw/control.h +++ b/include/wx/msw/control.h @@ -133,6 +133,14 @@ protected: // common part of the 3 methods above WXHBRUSH MSWControlColorSolid(WXHDC pDC, wxColour colBg); + // another WM_CTLCOLOR-related function: if it returns false, we return + // NULL_BRUSH from MSWControlColor() to prevent the system from erasing the + // background at all + // + // override this function to return true for controls which do want to + // draw their background themselves + virtual bool MSWAlwaysDrawBg() const { return false; } + // this is a helper for the derived class GetClassDefaultAttributes() // implementation: it returns the right colours for the classes which // contain something else (e.g. wxListBox, wxTextCtrl, ...) instead of diff --git a/src/msw/control.cpp b/src/msw/control.cpp index 30bc08f498..96547014e9 100644 --- a/src/msw/control.cpp +++ b/src/msw/control.cpp @@ -371,7 +371,7 @@ WXHBRUSH wxControl::MSWControlColor(WXHDC pDC) } #endif // wxUSE_UXTHEME - return ::GetStockObject(NULL_BRUSH); + return MSWAlwaysDrawBg() ? 0 : ::GetStockObject(NULL_BRUSH); } WXHBRUSH wxControl::MSWControlColorDisabled(WXHDC pDC)