From 8681b0940e488496e86dcb92f55600197fe98803 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 15 Nov 2004 18:10:48 +0000 Subject: [PATCH] restored OnEraseBackground(), we do need it but only for the cases when the window has a non default background colour git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30549 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/msw/window.h | 3 ++- src/msw/window.cpp | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/include/wx/msw/window.h b/include/wx/msw/window.h index 56d65c055b..d0a8877e37 100644 --- a/include/wx/msw/window.h +++ b/include/wx/msw/window.h @@ -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: diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 8c7b93ca62..49c4a6c7c2 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -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 // --------------------------------------------------------------------------- -- 2.45.2