- // Tries:
- // 1) A callback function (to become obsolete)
- // 2) OnCommand, starting at this window and working up parent hierarchy
- // 3) OnCommand then calls ProcessEvent to search the event tables.
- if (m_callback)
- {
- (void) (*(m_callback)) (*this, event);
- }
- else
- {
- GetEventHandler()->OnCommand(*this, event);
- }
+ // In general, you don't want to erase the background of a control,
+ // or you'll get a flicker.
+ // TODO: move this 'null' function into each control that
+ // might flicker.
+
+ RECT rect;
+ ::GetClientRect((HWND) GetHWND(), &rect);
+
+ HBRUSH hBrush = ::CreateSolidBrush(PALETTERGB(GetBackgroundColour().Red(),
+ GetBackgroundColour().Green(),
+ GetBackgroundColour().Blue()));
+ int mode = ::SetMapMode((HDC) event.GetDC()->GetHDC(), MM_TEXT);
+
+ ::FillRect ((HDC) event.GetDC()->GetHDC(), &rect, hBrush);
+ ::DeleteObject(hBrush);
+ ::SetMapMode((HDC) event.GetDC()->GetHDC(), mode);