// constants
// ---------------------------------------------------------------------------
-// FIXME does anybody use those? they're unused by wxWidgets...
+#if WXWIN_COMPATIBILITY_2_4
+// they're unused by wxWidgets...
enum
{
wxKEY_SHIFT = 1,
wxKEY_CTRL = 2
};
+#endif
// ---------------------------------------------------------------------------
// wxWindow declaration for MSW
// --------------
void OnPaint(wxPaintEvent& event);
+ void OnEraseBackground(wxEraseEvent& event);
#ifdef __WXWINCE__
- void OnInitDialog( wxInitDialogEvent& event );
+ void OnInitDialog(wxInitDialogEvent& event);
#endif
public:
void UnpackScroll(WXWPARAM wParam, WXLPARAM lParam,
WXWORD *code, WXWORD *pos, WXHWND *hwnd);
void UnpackCtlColor(WXWPARAM wParam, WXLPARAM lParam,
- WXWORD *nCtlColor, WXHDC *hdc, WXHWND *hwnd);
+ WXHDC *hdc, WXHWND *hwnd);
void UnpackMenuSelect(WXWPARAM wParam, WXLPARAM lParam,
WXWORD *item, WXWORD *flags, WXHMENU *hmenu);
bool HandleCommand(WXWORD id, WXWORD cmd, WXHWND control);
- bool HandleCtlColor(WXHBRUSH *hBrush,
- WXHDC hdc,
- WXHWND hWnd,
- WXUINT nCtlColor,
- WXUINT message,
- WXWPARAM wParam,
- WXLPARAM lParam);
+ bool HandleCtlColor(WXHBRUSH *hBrush, WXHDC hdc, WXHWND hWnd);
bool HandlePaletteChanged(WXHWND hWndPalChange);
bool HandleQueryNewPalette();
// this function should return the brush to paint the window background
// with or 0 for the default brush
- virtual WXHBRUSH OnCtlColor(WXHDC hDC,
- WXHWND hWnd,
- WXUINT nCtlColor,
- WXUINT message,
- WXWPARAM wParam,
- WXLPARAM lParam);
+ virtual WXHBRUSH MSWControlColor(WXHDC hDC);
+
+ // this function should return the brush to paint the children controls
+ // background or 0 if this window doesn't impose any particular background
+ // on its children
+ //
+ // the base class version uses MSWGetBgColourForChild() and returns a solid
+ // brush if we have a non default background colour or 0 otherwise
+ virtual WXHBRUSH MSWGetBgBrushForChild(WXHDC WXUNUSED(hDC), wxWindow *child)
+ {
+ return MSWGetSolidBgBrushForChild(child);
+ }
+
+ // return the background colour of this window under the given child
+ // (possible grand child)
+ //
+ // this is a hack as if the background is themed, there is no single colour
+ // representing it, but sometimes we can't use the pattern brush returned
+ // by MSWGetBgBrushForChild() anyhow and then this function is used as
+ // fallback
+ //
+ // the base class version returns bg colour if it had been explicitely set
+ // or wxNullColour otherwise
+ virtual wxColour MSWGetBgColourForChild(wxWindow *child);
+
+ // convenience function: returns a solid brush of the colour returned by
+ // MSWGetBgColourForChild() or 0
+ WXHBRUSH MSWGetSolidBgBrushForChild(wxWindow *child);
+
+ // normally just calls MSWGetBgBrushForChild() on the parent window but may
+ // be overridden if the default background brush is not suitable for some
+ // reason (e.g. wxStaticBox uses MSWGetSolidBgBrushForChild() instead)
+ virtual WXHBRUSH MSWGetBgBrushForSelf(wxWindow *parent, WXHDC hDC);
+
+ // return the background brush to use for this window by quering the parent
+ // windows via their MSWGetBgBrushForChild() recursively
+ WXHBRUSH MSWGetBgBrush(WXHDC hDC);
// Responds to colour changes: passes event on to children.
void OnSysColourChanged(wxSysColourChangedEvent& event);
int m_lastMouseEvent;
#endif // wxUSE_MOUSEEVENT_HACK
- WXHMENU m_hMenu; // Menu, if any
-
// implement the base class pure virtuals
virtual void DoClientToScreen( int *x, int *y ) const;
virtual void DoScreenToClient( int *x, int *y ) const;