]> git.saurik.com Git - wxWidgets.git/commitdiff
restored OnEraseBackground(), we do need it but only for the cases when the window...
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 15 Nov 2004 18:10:48 +0000 (18:10 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 15 Nov 2004 18:10:48 +0000 (18:10 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30549 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/msw/window.h
src/msw/window.cpp

index 56d65c055b377bfc0716c216917c84ad6efa7501..d0a8877e372f2938220b4d07b7b43a2e6eb86e76 100644 (file)
@@ -166,8 +166,9 @@ public:
     // --------------
 
     void OnPaint(wxPaintEvent& event);
+    void OnEraseBackground(wxEraseEvent& event);
 #ifdef __WXWINCE__
-    void OnInitDialog( wxInitDialogEvent& event );
+    void OnInitDialog(wxInitDialogEvent& event);
 #endif
 
 public:
index 8c7b93ca6286f2ee435d5c3ab4b0d520198a848c..49c4a6c7c2faf6bddfec0b1a128faaac7a9621f3 100644 (file)
@@ -333,6 +333,7 @@ wxCONSTRUCTOR_DUMMY(wxWindow)
 
 BEGIN_EVENT_TABLE(wxWindowMSW, wxWindowBase)
     EVT_SYS_COLOUR_CHANGED(wxWindowMSW::OnSysColourChanged)
+    EVT_ERASE_BACKGROUND(wxWindowMSW::OnEraseBackground)
 #ifdef __WXWINCE__
     EVT_INIT_DIALOG(wxWindowMSW::OnInitDialog)
 #endif
@@ -4067,6 +4068,40 @@ bool wxWindowMSW::HandleEraseBkgnd(WXHDC hdc)
     return rc;
 }
 
+void wxWindowMSW::OnEraseBackground(wxEraseEvent& event)
+{
+    if ( !m_hasBgCol )
+    {
+        event.Skip();
+        return;
+    }
+
+    // we have a fixed solid background colour, do use it
+    RECT rect;
+    ::GetClientRect(GetHwnd(), &rect);
+
+    wxColour backgroundColour(GetBackgroundColour());
+    COLORREF ref = PALETTERGB(backgroundColour.Red(),
+                              backgroundColour.Green(),
+                              backgroundColour.Blue());
+    HBRUSH hBrush = ::CreateSolidBrush(ref);
+    if ( !hBrush )
+        wxLogLastError(wxT("CreateSolidBrush"));
+
+    HDC hdc = (HDC)event.GetDC()->GetHDC();
+
+#ifndef __WXWINCE__
+    int mode = ::SetMapMode(hdc, MM_TEXT);
+#endif
+
+    ::FillRect(hdc, &rect, hBrush);
+    ::DeleteObject(hBrush);
+
+#ifndef __WXWINCE__
+    ::SetMapMode(hdc, mode);
+#endif
+}
+
 // ---------------------------------------------------------------------------
 // moving and resizing
 // ---------------------------------------------------------------------------