#endif
#include "wx/statbox.h"
+#include "wx/notebook.h"
#include "wx/msw/private.h"
+// this is for Win CE
+#ifndef WS_EX_TRANSPARENT
+ #define WS_EX_TRANSPARENT 0
+#endif
+
// ----------------------------------------------------------------------------
// wxWin macros
// ----------------------------------------------------------------------------
if ( !CreateControl(parent, id, pos, size, style, wxDefaultValidator, name) )
return false;
- // as wxStaticBox doesn't draw its own background, we make it transparent
- // to force redrawing its background which could have been overwritten by
- // the other controls inside it
- //
- // FIXME: I still think that it isn't the right solution because the static
- // boxes shouldn't have to be transparent if the redrawing was done
- // right elsewhere - who ever had to make them transparent in non
- // wxWidgets programs, after all? But for now it does fix a serious
- // problem (try resizing the sizers test screen in the layout sample
- // after removing WS_EX_TRANSPARENT bit) and so let's use it until
- // we fix the real underlying problem
if ( !MSWCreateControl(wxT("BUTTON"), BS_GROUPBOX, pos, size, label,
-#ifdef __WXWINCE__
- 0
-#else
- WS_EX_TRANSPARENT
-#endif
- ) )
+ WS_EX_TRANSPARENT) )
return false;
return true;
return wxSize(wBox, hBox);
}
+WXHBRUSH
+wxStaticBox::MSWGetBgBrushForSelf(wxWindow *parent, WXHDC WXUNUSED(pDC))
+{
+ // we can't use pattern brushes because, apparently, the window proc of our
+ // class does something which invalidates the brush origin before drawing
+ // with it and so any patetrn brush is used incorrectly as can be seen by
+ // putting a static box inside a (themed) notebook
+ //
+ // so always use solid brush for painting the background (note that this
+ // only applies to the background of the box label, not the insides of the
+ // box itself)
+ return parent->MSWGetSolidBgBrushForChild(this);
+}
+
#endif // wxUSE_STATBOX