bool HandleMouseEvent(WXUINT msg, int x, int y, WXUINT flags);
bool HandleMouseMove(int x, int y, WXUINT flags);
- bool HandleMouseWheel(WXWPARAM wParam, WXLPARAM lParam);
+ bool HandleMouseWheel(wxMouseWheelAxis axis,
+ WXWPARAM wParam, WXLPARAM lParam);
bool HandleChar(WXWPARAM wParam, WXLPARAM lParam);
bool HandleKeyDown(WXWPARAM wParam, WXLPARAM lParam);
bool HandleKeyUp(WXWPARAM wParam, WXLPARAM lParam);
-#if wxUSE_ACCEL
+#if wxUSE_HOTKEY
bool HandleHotKey(WXWPARAM wParam, WXLPARAM lParam);
#endif
#ifdef __WIN32__
bool HandlePower(WXWPARAM wParam, WXLPARAM lParam, bool *vetoed);
- // Window procedure
+ // The main body of common window proc for all wxWindow objects. It tries
+ // to handle the given message and returns true if it was handled (the
+ // appropriate return value is then put in result, which must be non-NULL)
+ // or false if it wasn't.
+ //
+ // This function should be overridden in any new code instead of
+ // MSWWindowProc() even if currently most of the code overrides
+ // MSWWindowProc() as it had been written before this function was added.
+ virtual bool MSWHandleMessage(WXLRESULT *result,
+ WXUINT message,
+ WXWPARAM wParam,
+ WXLPARAM lParam);
+
+ // Common Window procedure for all wxWindow objects: forwards to
+ // MSWHandleMessage() and MSWDefWindowProc() if the message wasn't handled.
virtual WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
// Calls an appropriate default window procedure
// weird wxToolBar case and MSWGetBgBrushForChild() itself is used by
// MSWGetBgBrush() to actually find the right brush to use.
+ // Adjust the origin for the brush returned by MSWGetBgBrushForChild().
+ //
+ // This needs to be overridden for scrolled windows to ensure that the
+ // scrolling of their associated DC is taken into account.
+ //
+ // Both parameters must be non-NULL.
+ virtual void MSWAdjustBrushOrg(int* WXUNUSED(xOrg),
+ int* WXUNUSED(yOrg)) const
+ {
+ }
+
// The brush returned from here must remain valid at least until the next
// event loop iteration. Returning 0, as is done by default, indicates
// there is no custom background brush.
// This should be overridden to return true for the controls which have
// themed background that should through their children. Currently only
// wxNotebook uses this.
- virtual bool MSWHasInheritableBackground() const { return false; }
+ //
+ // The base class version already returns true if we have a solid
+ // background colour that should be propagated to our children.
+ virtual bool MSWHasInheritableBackground() const
+ {
+ return InheritsBackgroundColour();
+ }
#if !defined(__WXWINCE__) && !defined(__WXUNIVERSAL__)
#define wxHAS_MSW_BACKGROUND_ERASE_HOOK
WXWPARAM wParam,
WXLPARAM lParam = 0) const;
+ // Another helper for creating wxKeyEvent for wxEVT_CHAR and related types.
+ //
+ // The wParam and lParam here must come from WM_CHAR event parameters, i.e.
+ // wParam must be a character and not a virtual code.
+ wxKeyEvent CreateCharEvent(wxEventType evType,
+ WXWPARAM wParam,
+ WXLPARAM lParam) const;
+
// default OnEraseBackground() implementation, return true if we did erase
// the background, false otherwise (i.e. the system should erase it)