// Modified by: Vadim Zeitlin on 13.05.99: complete refont of message handling,
// elimination of Default(), ...
// Created: 01/02/97
-// RCS-ID: $Id$
// Copyright: (c) Julian Smart
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
virtual void Raise();
virtual void Lower();
+ virtual bool BeginRepositioningChildren();
+ virtual void EndRepositioningChildren();
+
virtual bool Show(bool show = true);
virtual bool ShowWithEffect(wxShowEffect effect,
unsigned timeout = 0)
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
virtual void MSWDestroyWindow();
+ // Functions dealing with painting the window background. The derived
+ // classes should normally only need to reimplement MSWGetBgBrush() if they
+ // need to use a non-solid brush for erasing their background. This
+ // function is called by MSWGetBgBrushForChild() which only exists for the
+ // 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.
+ virtual WXHBRUSH MSWGetCustomBgBrush() { return 0; }
+
// 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
// 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)
DECLARE_EVENT_TABLE()
};
-// ----------------------------------------------------------------------------
-// inline functions
-// ----------------------------------------------------------------------------
-
-// ---------------------------------------------------------------------------
-// global functions
-// ---------------------------------------------------------------------------
-
-// key codes translation between wx and MSW
-
-// Translate MSW virtual key code to wx key code. lParam is used to distinguish
-// between numpad and extended version of the keys, extended is assumed by
-// default if lParam == 0.
-WXDLLIMPEXP_CORE int wxCharCodeMSWToWX(WXWORD vk, WXLPARAM lParam = 0);
-
-// Translate wxKeyCode enum element (passed as int for compatibility reasons)
-// to MSW virtual key code. isExtended is set to true if the key corresponds to
-// a non-numpad version of a key that exists both on numpad and outside it.
-WXDLLIMPEXP_CORE WXWORD wxCharCodeWXToMSW(int id, bool *isExtended = NULL);
-
// window creation helper class: before creating a new HWND, instantiate an
// object of this class on stack - this allows to process the messages sent to
// the window even before CreateWindow() returns