if ( !MSWCreateControl(WC_TREEVIEW, wstyle, pos, size) )
return false;
+ // this significantly reduces flicker when refreshing the control, for some
+ // reason the native control itself doesn't avoid background repainting
+ SetBackgroundStyle(wxBG_STYLE_CUSTOM);
+
#if wxUSE_COMCTL32_SAFELY
wxWindow::SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
wxWindow::SetForegroundColour(wxWindow::GetParent()->GetForegroundColour());
void wxWindowMSW::OnEraseBackground(wxEraseEvent& event)
{
+ if ( GetBackgroundStyle() == wxBG_STYLE_CUSTOM )
+ {
+ // don't skip the event here, custom background means that the app
+ // is drawing it itself in its OnPaint(), so don't draw it at all
+ // now to avoid flicker
+ return;
+ }
+
// standard non top level controls (i.e. except the dialogs) always erase
// their background themselves in HandleCtlColor() or have some control-
// specific ways to set the colours (common controls)
return;
}
- if ( GetBackgroundStyle() == wxBG_STYLE_CUSTOM )
- {
- // don't skip the event here, custom background means that the app
- // is drawing it itself in its OnPaint(), so don't draw it at all
- // now to avoid flicker
- return;
- }
-
wxDC *dc = event.GetDC();
if (!dc) return;
wxMSWDCImpl *impl = (wxMSWDCImpl*) dc->GetImpl();