]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/event.h
replace @b Note with @note; replace '' with "
[wxWidgets.git] / interface / event.h
index 28e44fed5d2df871a8576c0ef9a97a699d53fc33..e97a4d699a4606198e3092d1baff95c0a64fb2e8 100644 (file)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        event.h
 /////////////////////////////////////////////////////////////////////////////
 // Name:        event.h
-// Purpose:     interface of wxKeyEvent
+// Purpose:     interface of wx*Event classes
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
 // Licence:     wxWindows license
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
 // Licence:     wxWindows license
     Both key events provide untranslated key codes while the char event carries
     the translated one. The untranslated code for alphanumeric keys is always
     an upper case value. For the other keys it is one of @c WXK_XXX values
     Both key events provide untranslated key codes while the char event carries
     the translated one. The untranslated code for alphanumeric keys is always
     an upper case value. For the other keys it is one of @c WXK_XXX values
-    from the @ref overview_keycodes "keycodes table". The translated key is, in
-    general, the character the user expects to appear as the result of the key
-    combination when typing the text into a text entry zone, for example.
+    from the @ref page_keycodes.
+    The translated key is, in general, the character the user expects to appear
+    as the result of the key combination when typing the text into a text entry
+    zone, for example.
 
     A few examples to clarify this (all assume that CAPS LOCK is unpressed
     and the standard US keyboard): when the @c 'A' key is pressed, the key down
 
     A few examples to clarify this (all assume that CAPS LOCK is unpressed
     and the standard US keyboard): when the @c 'A' key is pressed, the key down
 
     Although in this simple case it is clear that the correct key code could be
     found in the key down event handler by checking the value returned by
 
     Although in this simple case it is clear that the correct key code could be
     found in the key down event handler by checking the value returned by
-    wxKeyEvent::ShiftDown, in general you should use
-    @c EVT_CHAR for this as for non-alphanumeric keys the translation is
-    keyboard-layout dependent and can only be done properly by the system itself.
+    wxKeyEvent::ShiftDown(), in general you should use @c EVT_CHAR for this as
+    for non-alphanumeric keys the translation is keyboard-layout dependent and
+    can only be done properly by the system itself.
 
     Another kind of translation is done when the control key is pressed: for
     example, for CTRL-A key press the key down event still carries the
 
     Another kind of translation is done when the control key is pressed: for
     example, for CTRL-A key press the key down event still carries the
-    same key code @c 'a' as usual but the char event will have key code of
-    1, the ASCII value of this key combination.
+    same key code @c 'a' as usual but the char event will have key code of 1,
+    the ASCII value of this key combination.
 
     You may discover how the other keys on your system behave interactively by
 
     You may discover how the other keys on your system behave interactively by
-    running the text() wxWidgets sample and pressing some keys
+    running the @ref page_samples_text wxWidgets sample and pressing some keys
     in any of the text controls shown in it.
 
     in any of the text controls shown in it.
 
-    @b Note: If a key down (@c EVT_KEY_DOWN) event is caught and
-    the event handler does not call @c event.Skip() then the corresponding
-    char event (@c EVT_CHAR) will not happen.  This is by design and
-    enables the programs that handle both types of events to be a bit
-    simpler.
-
-    @b Note for Windows programmers: The key and char events in wxWidgets are
-    similar to but slightly different from Windows @c WM_KEYDOWN and
-    @c WM_CHAR events. In particular, Alt-x combination will generate a char
-    event in wxWidgets (unless it is used as an accelerator).
-
     @b Tip: be sure to call @c event.Skip() for events that you don't process in
     key event function, otherwise menu shortcuts may cease to work under Windows.
 
     @b Tip: be sure to call @c event.Skip() for events that you don't process in
     key event function, otherwise menu shortcuts may cease to work under Windows.
 
+    @note If a key down (@c EVT_KEY_DOWN) event is caught and the event handler
+          does not call @c event.Skip() then the corresponding char event
+          (@c EVT_CHAR) will not happen.
+          This is by design and enables the programs that handle both types of
+          events to be a bit simpler.
+
+    @note For Windows programmers: The key and char events in wxWidgets are
+          similar to but slightly different from Windows @c WM_KEYDOWN and
+          @c WM_CHAR events. In particular, Alt-x combination will generate a
+          char event in wxWidgets (unless it is used as an accelerator).
+
+
+    @beginEventTable{wxKeyEvent}
+    @event{EVT_KEY_DOWN(func)}:
+           Process a wxEVT_KEY_DOWN event (any key has been pressed).
+    @event{EVT_KEY_UP(func)}:
+           Process a wxEVT_KEY_UP event (any key has been released).
+    @event{EVT_CHAR(func)}:
+           Process a wxEVT_CHAR event.
+    @endEventTable
+
     @library{wxcore}
     @category{events}
 */
     @library{wxcore}
     @category{events}
 */
@@ -71,62 +82,71 @@ class wxKeyEvent : public wxEvent
 {
 public:
     /**
 {
 public:
     /**
-        Constructor. Currently, the only valid event types are wxEVT_CHAR and
-        wxEVT_CHAR_HOOK.
+        Constructor.
+        Currently, the only valid event types are @c wxEVT_CHAR and @c wxEVT_CHAR_HOOK.
     */
     */
-    wxKeyEvent(WXTYPE keyEventType);
+    wxKeyEvent(wxEventType keyEventType = wxEVT_NULL);
 
     /**
         Returns @true if the Alt key was down at the time of the key event.
 
     /**
         Returns @true if the Alt key was down at the time of the key event.
-        Notice that GetModifiers() is easier to use
-        correctly than this function so you should consider using it in new code.
+
+        Notice that GetModifiers() is easier to use correctly than this function
+        so you should consider using it in new code.
     */
     bool AltDown() const;
 
     /**
         CMD is a pseudo key which is the same as Control for PC and Unix
     */
     bool AltDown() const;
 
     /**
         CMD is a pseudo key which is the same as Control for PC and Unix
-        platforms but the special APPLE (a.k.a as COMMAND) key under
-        Macs: it makes often sense to use it instead of, say, ControlDown() because Cmd
+        platforms but the special APPLE (a.k.a as COMMAND) key under Macs:
+        it makes often sense to use it instead of, say, ControlDown() because Cmd
         key is used for the same thing under Mac as Ctrl elsewhere (but Ctrl still
         exists, just not used for this purpose under Mac). So for non-Mac platforms
         key is used for the same thing under Mac as Ctrl elsewhere (but Ctrl still
         exists, just not used for this purpose under Mac). So for non-Mac platforms
-        this is the same as ControlDown() and under
-        Mac this is the same as MetaDown().
+        this is the same as ControlDown() and under Mac this is the same as MetaDown().
     */
     bool CmdDown() const;
 
     /**
         Returns @true if the control key was down at the time of the key event.
     */
     bool CmdDown() const;
 
     /**
         Returns @true if the control key was down at the time of the key event.
-        Notice that GetModifiers() is easier to use
-        correctly than this function so you should consider using it in new code.
+
+        Notice that GetModifiers() is easier to use correctly than this function
+        so you should consider using it in new code.
     */
     bool ControlDown() const;
 
     /**
         Returns the virtual key code. ASCII events return normal ASCII values,
     */
     bool ControlDown() const;
 
     /**
         Returns the virtual key code. ASCII events return normal ASCII values,
-        while non-ASCII events return values such as @b WXK_LEFT for the
-        left cursor key. See Keycodes() for a full list of
-        the virtual key codes.
+        while non-ASCII events return values such as @b WXK_LEFT for the left cursor
+        key. See @ref page_keycodes for a full list of the virtual key codes.
+
         Note that in Unicode build, the returned value is meaningful only if the
         user entered a character that can be represented in current locale's default
         Note that in Unicode build, the returned value is meaningful only if the
         user entered a character that can be represented in current locale's default
-        charset. You can obtain the corresponding Unicode character using
-        GetUnicodeKey().
+        charset. You can obtain the corresponding Unicode character using GetUnicodeKey().
     */
     int GetKeyCode() const;
 
     /**
         Return the bitmask of modifier keys which were pressed when this event
     */
     int GetKeyCode() const;
 
     /**
         Return the bitmask of modifier keys which were pressed when this event
-        happened. See @ref overview_keymodifiers "key modifier constants" for the full
-        list
-        of modifiers.
+        happened. See @ref page_keymodifiers for the full list of modifiers.
+
         Notice that this function is easier to use correctly than, for example,
         Notice that this function is easier to use correctly than, for example,
-        ControlDown() because when using the latter you
-        also have to remember to test that none of the other modifiers is pressed:
-        
-        and forgetting to do it can result in serious program bugs (e.g. program not
-        working with European keyboard layout where ALTGR key which is seen by
-        the program as combination of CTRL and ALT is used). On the
-        other hand, you can simply write
-        
+        ControlDown() because when using the latter you also have to remember to
+        test that none of the other modifiers is pressed:
+
+        @code
+        if ( ControlDown() && !AltDown() && !ShiftDown() && !MetaDown() )
+            ... handle Ctrl-XXX ...
+        @endcode
+
+        and forgetting to do it can result in serious program bugs (e.g. program
+        not working with European keyboard layout where ALTGR key which is seen by
+        the program as combination of CTRL and ALT is used). On the other hand,
+        you can simply write:
+
+        @code
+        if ( GetModifiers() == wxMOD_CONTROL )
+            ... handle Ctrl-XXX ...
+        @endcode
+
         with this function.
     */
     int GetModifiers() const;
         with this function.
     */
     int GetModifiers() const;
@@ -136,27 +156,30 @@ public:
         Obtains the position (in client coordinates) at which the key was pressed.
     */
     wxPoint GetPosition() const;
         Obtains the position (in client coordinates) at which the key was pressed.
     */
     wxPoint GetPosition() const;
-    const void GetPosition(long* x, long* y) const;
+    void GetPosition(long* x, long* y) const;
     //@}
 
     /**
         Returns the raw key code for this event. This is a platform-dependent scan code
         which should only be used in advanced applications.
     //@}
 
     /**
         Returns the raw key code for this event. This is a platform-dependent scan code
         which should only be used in advanced applications.
-        @b NB: Currently the raw key codes are not supported by all ports, use
-        @c #ifdef wxHAS_RAW_KEY_CODES to determine if this feature is available.
+
+        @note Currently the raw key codes are not supported by all ports, use
+              @ifdef_ wxHAS_RAW_KEY_CODES to determine if this feature is available.
     */
     wxUint32 GetRawKeyCode() const;
 
     /**
         Returns the low level key flags for this event. The flags are
         platform-dependent and should only be used in advanced applications.
     */
     wxUint32 GetRawKeyCode() const;
 
     /**
         Returns the low level key flags for this event. The flags are
         platform-dependent and should only be used in advanced applications.
-        @b NB: Currently the raw key flags are not supported by all ports, use
-        @c #ifdef wxHAS_RAW_KEY_CODES to determine if this feature is available.
+
+        @note Currently the raw key flags are not supported by all ports, use
+              @ifdef_ wxHAS_RAW_KEY_CODES to determine if this feature is available.
     */
     wxUint32 GetRawKeyFlags() const;
 
     /**
         Returns the Unicode character corresponding to this key event.
     */
     wxUint32 GetRawKeyFlags() const;
 
     /**
         Returns the Unicode character corresponding to this key event.
+
         This function is only available in Unicode build, i.e. when
         @c wxUSE_UNICODE is 1.
     */
         This function is only available in Unicode build, i.e. when
         @c wxUSE_UNICODE is 1.
     */
@@ -165,89 +188,39 @@ public:
     /**
         Returns the X position (in client coordinates) of the event.
     */
     /**
         Returns the X position (in client coordinates) of the event.
     */
-    long GetX() const;
+    wxCoord GetX() const;
 
     /**
 
     /**
-        Returns the Y (in client coordinates) position of the event.
+        Returns the Y position (in client coordinates) of the event.
     */
     */
-    long GetY() const;
+    wxCoord GetY() const;
 
     /**
 
     /**
-        Returns @true if either CTRL or ALT keys was down
-        at the time of the key event. Note that this function does not take into
-        account neither SHIFT nor META key states (the reason for ignoring
-        the latter is that it is common for NUMLOCK key to be configured as
-        META under X but the key presses even while NUMLOCK is on should
-        be still processed normally).
+        Returns @true if either CTRL or ALT keys was down at the time of the
+        key event.
+
+        Note that this function does not take into account neither SHIFT nor
+        META key states (the reason for ignoring the latter is that it is
+        common for NUMLOCK key to be configured as META under X but the key
+        presses even while NUMLOCK is on should be still processed normally).
     */
     bool HasModifiers() const;
 
     /**
         Returns @true if the Meta key was down at the time of the key event.
     */
     bool HasModifiers() const;
 
     /**
         Returns @true if the Meta key was down at the time of the key event.
-        Notice that GetModifiers() is easier to use
-        correctly than this function so you should consider using it in new code.
+
+        Notice that GetModifiers() is easier to use correctly than this function
+        so you should consider using it in new code.
     */
     bool MetaDown() const;
 
     /**
         Returns @true if the shift key was down at the time of the key event.
     */
     bool MetaDown() const;
 
     /**
         Returns @true if the shift key was down at the time of the key event.
-        Notice that GetModifiers() is easier to use
-        correctly than this function so you should consider using it in new code.
-    */
-    bool ShiftDown() const;
-
-    /**
-        bool m_altDown
-        @b Deprecated: Please use GetModifiers()
-        instead!
-        @true if the Alt key is pressed down.
-    */
-
-
-    /**
-        bool m_controlDown
-        @b Deprecated: Please use GetModifiers()
-        instead!
-        @true if control is pressed down.
-    */
-
-
-    /**
-        long m_keyCode
-        @b Deprecated: Please use GetKeyCode()
-        instead!
-        Virtual keycode. See Keycodes() for a list of identifiers.
-    */
-
-
-    /**
-        bool m_metaDown
-        @b Deprecated: Please use GetModifiers()
-        instead!
-        @true if the Meta key is pressed down.
-    */
-
-
-    /**
-        bool m_shiftDown
-        @b Deprecated: Please use GetModifiers()
-        instead!
-        @true if shift is pressed down.
-    */
-
-
-    /**
-        int m_x
-        @b Deprecated: Please use GetX() instead!
-        X position of the event.
-    */
-
 
 
-    /**
-        int m_y
-        @b Deprecated: Please use GetY() instead!
-        Y position of the event.
+        Notice that GetModifiers() is easier to use correctly than this function
+        so you should consider using it in new code.
     */
     */
+    bool ShiftDown() const;
 };
 
 
 };
 
 
@@ -256,9 +229,22 @@ public:
     @class wxJoystickEvent
     @wxheader{event.h}
 
     @class wxJoystickEvent
     @wxheader{event.h}
 
-    This event class contains information about mouse events, particularly
+    This event class contains information about joystick events, particularly
     events received by windows.
 
     events received by windows.
 
+    @beginEventTable{wxJoystickEvent}
+    @style{EVT_JOY_BUTTON_DOWN(func)}:
+        Process a wxEVT_JOY_BUTTON_DOWN event.
+    @style{EVT_JOY_BUTTON_UP(func)}:
+        Process a wxEVT_JOY_BUTTON_UP event.
+    @style{EVT_JOY_MOVE(func)}:
+        Process a wxEVT_JOY_MOVE event.
+    @style{EVT_JOY_ZMOVE(func)}:
+        Process a wxEVT_JOY_ZMOVE event.
+    @style{EVT_JOYSTICK_EVENTS(func)}:
+        Processes all joystick events.
+    @endEventTable
+
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
@@ -270,50 +256,50 @@ public:
     /**
         Constructor.
     */
     /**
         Constructor.
     */
-    wxJoystickEvent(WXTYPE eventType = 0, int state = 0,
+    wxJoystickEvent(wxEventType eventType = wxEVT_NULL, int state = 0,
                     int joystick = wxJOYSTICK1,
                     int change = 0);
 
     /**
                     int joystick = wxJOYSTICK1,
                     int change = 0);
 
     /**
-        Returns @true if the event was a down event from the specified button (or any
-        button).
-        
+        Returns @true if the event was a down event from the specified button
+        (or any button).
+
         @param button
         @param button
-            Can be wxJOY_BUTTONn where n is 1, 2, 3 or 4; or wxJOY_BUTTON_ANY to
+            Can be @c wxJOY_BUTTONn where @c n is 1, 2, 3 or 4; or @c wxJOY_BUTTON_ANY to
             indicate any button down event.
     */
     bool ButtonDown(int button = wxJOY_BUTTON_ANY) const;
 
     /**
         Returns @true if the specified button (or any button) was in a down state.
             indicate any button down event.
     */
     bool ButtonDown(int button = wxJOY_BUTTON_ANY) const;
 
     /**
         Returns @true if the specified button (or any button) was in a down state.
-        
+
         @param button
         @param button
-            Can be wxJOY_BUTTONn where n is 1, 2, 3 or 4; or wxJOY_BUTTON_ANY to
+            Can be @c wxJOY_BUTTONn where @c n is 1, 2, 3 or 4; or @c wxJOY_BUTTON_ANY to
             indicate any button down event.
     */
     bool ButtonIsDown(int button = wxJOY_BUTTON_ANY) const;
 
     /**
             indicate any button down event.
     */
     bool ButtonIsDown(int button = wxJOY_BUTTON_ANY) const;
 
     /**
-        Returns @true if the event was an up event from the specified button (or any
-        button).
-        
+        Returns @true if the event was an up event from the specified button
+        (or any button).
+
         @param button
         @param button
-            Can be wxJOY_BUTTONn where n is 1, 2, 3 or 4; or wxJOY_BUTTON_ANY to
+            Can be @c wxJOY_BUTTONn where @c n is 1, 2, 3 or 4; or @c wxJOY_BUTTON_ANY to
             indicate any button down event.
     */
     bool ButtonUp(int button = wxJOY_BUTTON_ANY) const;
 
     /**
             indicate any button down event.
     */
     bool ButtonUp(int button = wxJOY_BUTTON_ANY) const;
 
     /**
-        Returns the identifier of the button changing state. This is a wxJOY_BUTTONn
-        identifier, where
-        n is one of 1, 2, 3, 4.
+        Returns the identifier of the button changing state.
+
+        This is a @c wxJOY_BUTTONn identifier, where @c n is one of 1, 2, 3, 4.
     */
     int GetButtonChange() const;
 
     /**
     */
     int GetButtonChange() const;
 
     /**
-        Returns the down state of the buttons. This is a bitlist of wxJOY_BUTTONn
-        identifiers, where
-        n is one of 1, 2, 3, 4.
+        Returns the down state of the buttons.
+
+        This is a @c wxJOY_BUTTONn identifier, where @c n is one of 1, 2, 3, 4.
     */
     int GetButtonState() const;
 
     */
     int GetButtonState() const;
 
@@ -334,8 +320,8 @@ public:
     int GetZPosition() const;
 
     /**
     int GetZPosition() const;
 
     /**
-        Returns @true if this was a button up or down event (@e not 'is any button
-        down?').
+        Returns @true if this was a button up or down event
+        (@e not 'is any button down?').
     */
     bool IsButton() const;
 
     */
     bool IsButton() const;
 
@@ -358,10 +344,36 @@ public:
 
     A scroll event holds information about events sent from scrolling windows.
 
 
     A scroll event holds information about events sent from scrolling windows.
 
+
+    @beginEventTable{wxScrollWinEvent}
+    You can use the EVT_SCROLLWIN* macros for intercepting scroll window events
+    from the receiving window.
+    @event{EVT_SCROLLWIN(func)}:
+        Process all scroll events.
+    @event{EVT_SCROLLWIN_TOP(func)}:
+        Process wxEVT_SCROLLWIN_TOP scroll-to-top events.
+    @event{EVT_SCROLLWIN_BOTTOM(func)}:
+        Process wxEVT_SCROLLWIN_BOTTOM scroll-to-bottom events.
+    @event{EVT_SCROLLWIN_LINEUP(func)}:
+        Process wxEVT_SCROLLWIN_LINEUP line up events.
+    @event{EVT_SCROLLWIN_LINEDOWN(func)}:
+        Process wxEVT_SCROLLWIN_LINEDOWN line down events.
+    @event{EVT_SCROLLWIN_PAGEUP(func)}:
+        Process wxEVT_SCROLLWIN_PAGEUP page up events.
+    @event{EVT_SCROLLWIN_PAGEDOWN(func)}:
+        Process wxEVT_SCROLLWIN_PAGEDOWN page down events.
+    @event{EVT_SCROLLWIN_THUMBTRACK(func)}:
+        Process wxEVT_SCROLLWIN_THUMBTRACK thumbtrack events
+        (frequent events sent as the user drags the thumbtrack).
+    @event{EVT_SCROLLWIN_THUMBRELEASE(func)}:
+        Process wxEVT_SCROLLWIN_THUMBRELEASE thumb release events.
+    @endEventTable
+
+
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
-    @see wxScrollEvent, @ref overview_eventhandlingoverview
+    @see wxScrollEvent, @ref overview_eventhandling
 */
 class wxScrollWinEvent : public wxEvent
 {
 */
 class wxScrollWinEvent : public wxEvent
 {
@@ -369,17 +381,20 @@ public:
     /**
         Constructor.
     */
     /**
         Constructor.
     */
-    wxScrollWinEvent(WXTYPE commandType = 0, int pos = 0,
+    wxScrollWinEvent(wxEventType commandType = wxEVT_NULL, int pos = 0,
                      int orientation = 0);
 
     /**
         Returns wxHORIZONTAL or wxVERTICAL, depending on the orientation of the
         scrollbar.
                      int orientation = 0);
 
     /**
         Returns wxHORIZONTAL or wxVERTICAL, depending on the orientation of the
         scrollbar.
+
+        @todo wxHORIZONTAL and wxVERTICAL should go in their own enum
     */
     int GetOrientation() const;
 
     /**
         Returns the position of the scrollbar for the thumb track and release events.
     */
     int GetOrientation() const;
 
     /**
         Returns the position of the scrollbar for the thumb track and release events.
+
         Note that this field can't be used for the other events, you need to query
         the window itself for the current position in that case.
     */
         Note that this field can't be used for the other events, you need to query
         the window itself for the current position in that case.
     */
@@ -396,10 +411,21 @@ public:
     when the user changes the colour settings using the control panel.
     This is only appropriate under Windows.
 
     when the user changes the colour settings using the control panel.
     This is only appropriate under Windows.
 
+    @remarks
+        The default event handler for this event propagates the event to child windows,
+        since Windows only sends the events to top-level windows.
+        If intercepting this event for a top-level window, remember to call the base
+        class handler, or to pass the event on to the window's children explicitly.
+
+    @beginEventTable{wxSysColourChangedEvent}
+    @event{EVT_SYS_COLOUR_CHANGED(func)}:
+        Process a wxEVT_SYS_COLOUR_CHANGED event.
+    @endEventTable
+
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
-    @see @ref overview_eventhandlingoverview
+    @see @ref overview_eventhandling
 */
 class wxSysColourChangedEvent : public wxEvent
 {
 */
 class wxSysColourChangedEvent : public wxEvent
 {
@@ -417,15 +443,20 @@ public:
     @wxheader{event.h}
 
     This event is sent just after the actual window associated with a wxWindow
     @wxheader{event.h}
 
     This event is sent just after the actual window associated with a wxWindow
-    object
-    has been created. Since it is derived from wxCommandEvent, the event propagates
-    up
+    object has been created.
+
+    Since it is derived from wxCommandEvent, the event propagates up
     the window hierarchy.
 
     the window hierarchy.
 
+    @beginEventTable{wxWindowCreateEvent}
+    @event{EVT_WINDOW_CREATE(func)}:
+        Process a wxEVT_CREATE event.
+    @endEventTable
+
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
-    @see @ref overview_eventhandlingoverview, wxWindowDestroyEvent
+    @see @ref overview_eventhandling, wxWindowDestroyEvent
 */
 class wxWindowCreateEvent : public wxCommandEvent
 {
 */
 class wxWindowCreateEvent : public wxCommandEvent
 {
@@ -445,14 +476,69 @@ public:
     A paint event is sent when a window's contents needs to be repainted.
 
     Please notice that in general it is impossible to change the drawing of a
     A paint event is sent when a window's contents needs to be repainted.
 
     Please notice that in general it is impossible to change the drawing of a
-    standard control (such as wxButton) and so you shouldn't
-    attempt to handle paint events for them as even if it might work on some
-    platforms, this is inherently not portable and won't work everywhere.
+    standard control (such as wxButton) and so you shouldn't attempt to handle
+    paint events for them as even if it might work on some platforms, this is
+    inherently not portable and won't work everywhere.
+
+    @remarks
+    Note that in a paint event handler, the application must always create a
+    wxPaintDC object, even if you do not use it. Otherwise, under MS Windows,
+    refreshing for this and other windows will go wrong.
+    For example:
+    @code
+    void MyWindow::OnPaint(wxPaintEvent& event)
+    {
+        wxPaintDC dc(this);
+
+        DrawMyDocument(dc);
+    }
+    @endcode
+    You can optimize painting by retrieving the rectangles that have been damaged
+    and only repainting these. The rectangles are in terms of the client area,
+    and are unscrolled, so you will need to do some calculations using the current
+    view position to obtain logical, scrolled units.
+    Here is an example of using the wxRegionIterator class:
+    @code
+    // Called when window needs to be repainted.
+    void MyWindow::OnPaint(wxPaintEvent& event)
+    {
+        wxPaintDC dc(this);
+
+        // Find Out where the window is scrolled to
+        int vbX,vbY;                     // Top left corner of client
+        GetViewStart(&vbX,&vbY);
+
+        int vX,vY,vW,vH;                 // Dimensions of client area in pixels
+        wxRegionIterator upd(GetUpdateRegion()); // get the update rect list
+
+        while (upd)
+        {
+            vX = upd.GetX();
+            vY = upd.GetY();
+            vW = upd.GetW();
+            vH = upd.GetH();
+
+            // Alternatively we can do this:
+            // wxRect rect(upd.GetRect());
+
+            // Repaint this rectangle
+            ...some code...
+
+            upd ++ ;
+        }
+    }
+    @endcode
+
+
+    @beginEventTable{wxPaintEvent}
+    @event{EVT_PAINT(func)}:
+        Process a wxEVT_PAINT event.
+    @endEventTable
 
     @library{wxcore}
     @category{events}
 
 
     @library{wxcore}
     @category{events}
 
-    @see @ref overview_eventhandlingoverview
+    @see @ref overview_eventhandling
 */
 class wxPaintEvent : public wxEvent
 {
 */
 class wxPaintEvent : public wxEvent
 {
@@ -471,14 +557,18 @@ public:
 
     An event being sent when a top level window is maximized. Notice that it is
     not sent when the window is restored to its original size after it had been
 
     An event being sent when a top level window is maximized. Notice that it is
     not sent when the window is restored to its original size after it had been
-    maximized, only a normal wxSizeEvent is generated in
-    this case.
+    maximized, only a normal wxSizeEvent is generated in this case.
+
+    @beginEventTable{wxMaximizeEvent}
+    @event{EVT_MAXIMIZE(func)}:
+        Process a wxEVT_MAXIMIZE event.
+    @endEventTable
 
     @library{wxcore}
     @category{events}
 
 
     @library{wxcore}
     @category{events}
 
-    @see @ref overview_eventhandlingoverview, wxTopLevelWindow::Maximize,
-    wxTopLevelWindow::IsMaximized
+    @see @ref overview_eventhandling, wxTopLevelWindow::Maximize,
+         wxTopLevelWindow::IsMaximized
 */
 class wxMaximizeEvent : public wxEvent
 {
 */
 class wxMaximizeEvent : public wxEvent
 {
@@ -498,10 +588,51 @@ public:
     This class is used for pseudo-events which are called by wxWidgets
     to give an application the chance to update various user interface elements.
 
     This class is used for pseudo-events which are called by wxWidgets
     to give an application the chance to update various user interface elements.
 
+    @remarks
+    Without update UI events, an application has to work hard to check/uncheck,
+    enable/disable, show/hide, and set the text for elements such as menu items
+    and toolbar buttons. The code for doing this has to be mixed up with the code
+    that is invoked when an action is invoked for a menu item or button.
+    With update UI events, you define an event handler to look at the state of the
+    application and change UI elements accordingly. wxWidgets will call your member
+    functions in idle time, so you don't have to worry where to call this code.
+    In addition to being a clearer and more declarative method, it also means you don't
+    have to worry whether you're updating a toolbar or menubar identifier. The same
+    handler can update a menu item and toolbar button, if the identifier is the same.
+    Instead of directly manipulating the menu or button, you call functions in the event
+    object, such as wxUpdateUIEvent::Check. wxWidgets will determine whether such a
+    call has been made, and which UI element to update.
+    These events will work for popup menus as well as menubars. Just before a menu is
+    popped up, wxMenu::UpdateUI is called to process any UI events for the window that
+    owns the menu.
+    If you find that the overhead of UI update processing is affecting your application,
+    you can do one or both of the following:
+    @li Call wxUpdateUIEvent::SetMode with a value of wxUPDATE_UI_PROCESS_SPECIFIED,
+        and set the extra style wxWS_EX_PROCESS_UI_UPDATES for every window that should
+        receive update events. No other windows will receive update events.
+    @li Call wxUpdateUIEvent::SetUpdateInterval with a millisecond value to set the delay
+        between updates. You may need to call wxWindow::UpdateWindowUI at critical points,
+        for example when a dialog is about to be shown, in case the user sees a slight
+        delay before windows are updated.
+    Note that although events are sent in idle time, defining a wxIdleEvent handler
+    for a window does not affect this because the events are sent from wxWindow::OnInternalIdle
+    which is always called in idle time.
+    wxWidgets tries to optimize update events on some platforms.
+    On Windows and GTK+, events for menubar items are only sent when the menu is about
+    to be shown, and not in idle time.
+
+    @beginEventTable{wxUpdateUIEvent}
+    @event{EVT_UPDATE_UI(id, func)}:
+        Process a wxEVT_UPDATE_UI event for the command with the given id.
+    @event{EVT_UPDATE_UI_RANGE(id1, id2, func)}:
+        Process a wxEVT_UPDATE_UI event for any command with id included in the given range.
+    @endEventTable
+
+
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
-    @see @ref overview_eventhandlingoverview
+    @see @ref overview_eventhandling
 */
 class wxUpdateUIEvent : public wxCommandEvent
 {
 */
 class wxUpdateUIEvent : public wxCommandEvent
 {
@@ -523,7 +654,7 @@ public:
         the interval is set to 0; so update events will be sent as
         often as possible. You can reduce the frequency that events
         are sent by changing the mode and/or setting an update interval.
         the interval is set to 0; so update events will be sent as
         often as possible. You can reduce the frequency that events
         are sent by changing the mode and/or setting an update interval.
-        
+
         @see ResetUpdateTime(), SetUpdateInterval(),
              SetMode()
     */
         @see ResetUpdateTime(), SetUpdateInterval(),
              SetMode()
     */
@@ -604,7 +735,7 @@ public:
         current time. It is assumed that update events are
         normally sent in idle time, so this is called at the end of
         idle processing.
         current time. It is assumed that update events are
         normally sent in idle time, so this is called at the end of
         idle processing.
-        
+
         @see CanUpdate(), SetUpdateInterval(),
              SetMode()
     */
         @see CanUpdate(), SetUpdateInterval(),
              SetMode()
     */
@@ -655,15 +786,29 @@ public:
     wxEVT_COMMAND_TEXT_CUT and wxEVT_COMMAND_TEXT_PASTE.
 
     If any of these events is processed (without being skipped) by an event
     wxEVT_COMMAND_TEXT_CUT and wxEVT_COMMAND_TEXT_PASTE.
 
     If any of these events is processed (without being skipped) by an event
-    handler, the corresponding operation doesn't take place which allows to prevent
-    the text from being copied from or pasted to a control. It is also possible to
-    examine the clipboard contents in the PASTE event handler and transform it in
-    some way before inserting in a control -- for example, changing its case or
-    removing invalid characters.
+    handler, the corresponding operation doesn't take place which allows to
+    prevent the text from being copied from or pasted to a control. It is also
+    possible to examine the clipboard contents in the PASTE event handler and
+    transform it in some way before inserting in a control -- for example,
+    changing its case or removing invalid characters.
 
     Finally notice that a CUT event is always preceded by the COPY event which
 
     Finally notice that a CUT event is always preceded by the COPY event which
-    makes it possible to only process the latter if it doesn't matter if the text
-    was copied or cut.
+    makes it possible to only process the latter if it doesn't matter if the
+    text was copied or cut.
+
+    @beginEventTable{wxClipboardTextEvent}
+    @event{EVT_TEXT_COPY(id, func)}:
+           Some or all of the controls content was copied to the clipboard.
+    @event{EVT_TEXT_CUT(id, func)}:
+           Some or all of the controls content was cut (i.e. copied and
+           deleted).
+    @event{EVT_TEXT_PASTE(id, func)}:
+           Clipboard content was pasted into the control.
+    @endEventTable
+
+    @note
+    These events are currently only generated by wxTextCtrl under GTK+. They
+    are generated by all controls under Windows.
 
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
@@ -674,10 +819,9 @@ class wxClipboardTextEvent : public wxCommandEvent
 {
 public:
     /**
 {
 public:
     /**
-        
+        Constructor.
     */
     */
-    wxClipboardTextEvent(wxEventType commandType = wxEVT_NULL,
-                         int id = 0);
+    wxClipboardTextEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
 };
 
 
 };
 
 
@@ -704,14 +848,14 @@ public:
     parent window receives @c wxEVT_LEAVE_WINDOW event not only when the
     mouse leaves the window entirely but also when it enters one of its children.
 
     parent window receives @c wxEVT_LEAVE_WINDOW event not only when the
     mouse leaves the window entirely but also when it enters one of its children.
 
-    @b NB: Note that under Windows CE mouse enter and leave events are not natively
+    @note Note that under Windows CE mouse enter and leave events are not natively
     supported
     by the system but are generated by wxWidgets itself. This has several
     drawbacks: the LEAVE_WINDOW event might be received some time after the mouse
     left the window and the state variables for it may have changed during this
     time.
 
     supported
     by the system but are generated by wxWidgets itself. This has several
     drawbacks: the LEAVE_WINDOW event might be received some time after the mouse
     left the window and the state variables for it may have changed during this
     time.
 
-    @b NB: Note the difference between methods like
+    @note Note the difference between methods like
     wxMouseEvent::LeftDown and
     wxMouseEvent::LeftIsDown: the former returns @true
     when the event corresponds to the left mouse button click while the latter
     wxMouseEvent::LeftDown and
     wxMouseEvent::LeftIsDown: the former returns @true
     when the event corresponds to the left mouse button click while the latter
@@ -735,7 +879,7 @@ class wxMouseEvent : public wxEvent
 public:
     /**
         Constructor. Valid event types are:
 public:
     /**
         Constructor. Valid event types are:
-        
+
          @b wxEVT_ENTER_WINDOW
          @b wxEVT_LEAVE_WINDOW
          @b wxEVT_LEFT_DOWN
          @b wxEVT_ENTER_WINDOW
          @b wxEVT_LEAVE_WINDOW
          @b wxEVT_LEFT_DOWN
@@ -756,12 +900,12 @@ public:
          @b wxEVT_MOTION
          @b wxEVT_MOUSEWHEEL
     */
          @b wxEVT_MOTION
          @b wxEVT_MOUSEWHEEL
     */
-    wxMouseEvent(WXTYPE mouseEventType = 0);
+    wxMouseEvent(wxEventType mouseEventType = 0);
 
     /**
         Returns @true if the Alt key was down at the time of the event.
     */
 
     /**
         Returns @true if the Alt key was down at the time of the event.
     */
-    bool AltDown();
+    bool AltDown() const;
 
     /**
         Returns @true if the event was a first extra button double click.
 
     /**
         Returns @true if the event was a first extra button double click.
@@ -810,32 +954,32 @@ public:
     /**
         Returns @true if the identified mouse button is changing state. Valid
         values of @a button are:
     /**
         Returns @true if the identified mouse button is changing state. Valid
         values of @a button are:
-        
+
         @c wxMOUSE_BTN_LEFT
         @c wxMOUSE_BTN_LEFT
-        
+
         check if left button was pressed
         check if left button was pressed
-        
+
         @c wxMOUSE_BTN_MIDDLE
         @c wxMOUSE_BTN_MIDDLE
-        
+
         check if middle button was pressed
         check if middle button was pressed
-        
+
         @c wxMOUSE_BTN_RIGHT
         @c wxMOUSE_BTN_RIGHT
-        
+
         check if right button was pressed
         check if right button was pressed
-        
+
         @c wxMOUSE_BTN_AUX1
         @c wxMOUSE_BTN_AUX1
-        
+
         check if the first extra button was pressed
         check if the first extra button was pressed
-        
+
         @c wxMOUSE_BTN_AUX2
         @c wxMOUSE_BTN_AUX2
-        
+
         check if the second extra button was pressed
         check if the second extra button was pressed
-        
+
         @c wxMOUSE_BTN_ANY
         @c wxMOUSE_BTN_ANY
-        
+
         check if any button was pressed
     */
         check if any button was pressed
     */
-    bool Button(int button);
+    bool Button(int button) const;
 
     /**
         If the argument is omitted, this returns @true if the event was a mouse
 
     /**
         If the argument is omitted, this returns @true if the event was a mouse
@@ -843,7 +987,7 @@ public:
         was generated (see Button() for the possible
         values).
     */
         was generated (see Button() for the possible
         values).
     */
-    bool ButtonDClick(int but = wxMOUSE_BTN_ANY);
+    bool ButtonDClick(int but = wxMOUSE_BTN_ANY) const;
 
     /**
         If the argument is omitted, this returns @true if the event was a mouse
 
     /**
         If the argument is omitted, this returns @true if the event was a mouse
@@ -851,7 +995,7 @@ public:
         was generated (see Button() for the possible
         values).
     */
         was generated (see Button() for the possible
         values).
     */
-    bool ButtonDown(int but = -1);
+    bool ButtonDown(int = wxMOUSE_BTN_ANY) const;
 
     /**
         If the argument is omitted, this returns @true if the event was a mouse
 
     /**
         If the argument is omitted, this returns @true if the event was a mouse
@@ -859,12 +1003,12 @@ public:
         was generated (see Button() for the possible
         values).
     */
         was generated (see Button() for the possible
         values).
     */
-    bool ButtonUp(int but = -1);
+    bool ButtonUp(int = wxMOUSE_BTN_ANY) const;
 
     /**
         Same as MetaDown() under Mac, same as
         ControlDown() elsewhere.
 
     /**
         Same as MetaDown() under Mac, same as
         ControlDown() elsewhere.
-        
+
         @see wxKeyEvent::CmdDown
     */
     bool CmdDown() const;
         @see wxKeyEvent::CmdDown
     */
     bool CmdDown() const;
@@ -872,20 +1016,20 @@ public:
     /**
         Returns @true if the control key was down at the time of the event.
     */
     /**
         Returns @true if the control key was down at the time of the event.
     */
-    bool ControlDown();
+    bool ControlDown() const;
 
     /**
         Returns @true if this was a dragging event (motion while a button is depressed).
 
     /**
         Returns @true if this was a dragging event (motion while a button is depressed).
-        
+
         @see Moving()
     */
         @see Moving()
     */
-    bool Dragging();
+    bool Dragging() const;
 
     /**
         Returns @true if the mouse was entering the window.
         See also Leaving().
     */
 
     /**
         Returns @true if the mouse was entering the window.
         See also Leaving().
     */
-    bool Entering();
+    bool Entering() const;
 
     /**
         Returns the mouse button which generated this event or @c wxMOUSE_BTN_NONE
 
     /**
         Returns the mouse button which generated this event or @c wxMOUSE_BTN_NONE
@@ -902,7 +1046,7 @@ public:
         Currently this function is implemented only in wxMac and returns -1 for the
         other platforms (you can still distinguish simple clicks from double-clicks as
         they generate different kinds of events however).
         Currently this function is implemented only in wxMac and returns -1 for the
         other platforms (you can still distinguish simple clicks from double-clicks as
         they generate different kinds of events however).
-        
+
         @wxsince{2.9.0}
     */
     int GetClickCount() const;
         @wxsince{2.9.0}
     */
     int GetClickCount() const;
@@ -953,12 +1097,12 @@ public:
     /**
         Returns X coordinate of the physical mouse event position.
     */
     /**
         Returns X coordinate of the physical mouse event position.
     */
-    long GetX() const;
+    wxCoord GetX() const;
 
     /**
         Returns Y coordinate of the physical mouse event position.
     */
 
     /**
         Returns Y coordinate of the physical mouse event position.
     */
-    long GetY();
+    wxCoord GetY() const;
 
     /**
         Returns @true if the event was a mouse button event (not necessarily a button
 
     /**
         Returns @true if the event was a mouse button event (not necessarily a button
@@ -1158,7 +1302,7 @@ public:
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
-    @see @ref overview_eventhandlingoverview
+    @see @ref overview_eventhandling
 */
 class wxDropFilesEvent : public wxEvent
 {
 */
 class wxDropFilesEvent : public wxEvent
 {
@@ -1166,7 +1310,7 @@ public:
     /**
         Constructor.
     */
     /**
         Constructor.
     */
-    wxDropFilesEvent(WXTYPE id = 0, int noFiles = 0,
+    wxDropFilesEvent(wxEventType id = 0, int noFiles = 0,
                      wxString* files = NULL);
 
     /**
                      wxString* files = NULL);
 
     /**
@@ -1223,7 +1367,7 @@ public:
     /**
         Constructor.
     */
     /**
         Constructor.
     */
-    wxCommandEvent(WXTYPE commandEventType = 0, int id = 0);
+    wxCommandEvent(wxEventType commandEventType = 0, int id = 0);
 
     /**
         Deprecated, use IsChecked() instead.
 
     /**
         Deprecated, use IsChecked() instead.
@@ -1234,13 +1378,13 @@ public:
         Returns client data pointer for a listbox or choice selection event
         (not valid for a deselection).
     */
         Returns client data pointer for a listbox or choice selection event
         (not valid for a deselection).
     */
-    void* GetClientData();
+    void* GetClientData() const;
 
     /**
         Returns client object pointer for a listbox or choice selection event
         (not valid for a deselection).
     */
 
     /**
         Returns client object pointer for a listbox or choice selection event
         (not valid for a deselection).
     */
-    wxClientData* GetClientObject();
+    wxClientData* GetClientObject() const;
 
     /**
         Returns extra information dependant on the event objects type.
 
     /**
         Returns extra information dependant on the event objects type.
@@ -1250,26 +1394,26 @@ public:
         multiple-selection boxes, and in this case the index and string values
         are indeterminate and the listbox must be examined by the application.
     */
         multiple-selection boxes, and in this case the index and string values
         are indeterminate and the listbox must be examined by the application.
     */
-    long GetExtraLong();
+    long GetExtraLong() const;
 
     /**
         Returns the integer identifier corresponding to a listbox, choice or
         radiobox selection (only if the event was a selection, not a
         deselection), or a boolean value representing the value of a checkbox.
     */
 
     /**
         Returns the integer identifier corresponding to a listbox, choice or
         radiobox selection (only if the event was a selection, not a
         deselection), or a boolean value representing the value of a checkbox.
     */
-    int GetInt();
+    int GetInt() const;
 
     /**
         Returns item index for a listbox or choice selection event (not valid for
         a deselection).
     */
 
     /**
         Returns item index for a listbox or choice selection event (not valid for
         a deselection).
     */
-    int GetSelection();
+    int GetSelection() const;
 
     /**
         Returns item string for a listbox or choice selection event (not valid for
         a deselection).
     */
 
     /**
         Returns item string for a listbox or choice selection event (not valid for
         a deselection).
     */
-    wxString GetString();
+    wxString GetString() const;
 
     /**
         This method can be used with checkbox and menu events: for the checkboxes, the
 
     /**
         This method can be used with checkbox and menu events: for the checkboxes, the
@@ -1286,7 +1430,7 @@ public:
         For a listbox or similar event, returns @true if it is a selection, @false if it
         is a deselection.
     */
         For a listbox or similar event, returns @true if it is a selection, @false if it
         is a deselection.
     */
-    bool IsSelection();
+    bool IsSelection() const;
 
     /**
         Sets the client data for this event.
 
     /**
         Sets the client data for this event.
@@ -1330,7 +1474,7 @@ public:
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
-    @see @ref overview_eventhandlingoverview, wxApp::IsActive
+    @see @ref overview_eventhandling, wxApp::IsActive
 */
 class wxActivateEvent : public wxEvent
 {
 */
 class wxActivateEvent : public wxEvent
 {
@@ -1338,7 +1482,7 @@ public:
     /**
         Constructor.
     */
     /**
         Constructor.
     */
-    wxActivateEvent(WXTYPE eventType = 0, bool active = true,
+    wxActivateEvent(wxEventType eventType = wxEVT_NULL, bool active = true,
                     int id = 0);
 
     /**
                     int id = 0);
 
     /**
@@ -1372,7 +1516,7 @@ public:
     @category{events}
 
     @see @ref overview_wxcommandevent "Command events", @ref
     @category{events}
 
     @see @ref overview_wxcommandevent "Command events", @ref
-    overview_eventhandlingoverview
+    overview_eventhandling
 */
 class wxContextMenuEvent : public wxCommandEvent
 {
 */
 class wxContextMenuEvent : public wxCommandEvent
 {
@@ -1380,7 +1524,7 @@ public:
     /**
         Constructor.
     */
     /**
         Constructor.
     */
-    wxContextMenuEvent(WXTYPE id = 0, int id = 0,
+    wxContextMenuEvent(wxEventType id = 0, int id = 0,
                        const wxPoint& pos = wxDefaultPosition);
 
     /**
                        const wxPoint& pos = wxDefaultPosition);
 
     /**
@@ -1392,7 +1536,7 @@ public:
         If the event originated from a keyboard event, the value returned from this
         function will be wxDefaultPosition.
     */
         If the event originated from a keyboard event, the value returned from this
         function will be wxDefaultPosition.
     */
-    wxPoint GetPosition() const;
+    const wxPoint& GetPosition() const;
 
     /**
         Sets the position at which the menu should be shown.
 
     /**
         Sets the position at which the menu should be shown.
@@ -1424,7 +1568,7 @@ public:
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
-    @see @ref overview_eventhandlingoverview
+    @see @ref overview_eventhandling
 */
 class wxEraseEvent : public wxEvent
 {
 */
 class wxEraseEvent : public wxEvent
 {
@@ -1457,7 +1601,7 @@ public:
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
-    @see @ref overview_eventhandlingoverview
+    @see @ref overview_eventhandling
 */
 class wxFocusEvent : public wxEvent
 {
 */
 class wxFocusEvent : public wxEvent
 {
@@ -1465,7 +1609,7 @@ public:
     /**
         Constructor.
     */
     /**
         Constructor.
     */
-    wxFocusEvent(WXTYPE eventType = 0, int id = 0);
+    wxFocusEvent(wxEventType eventType = 0, int id = 0);
 
     /**
         Returns the window associated with this event, that is the window which had the
 
     /**
         Returns the window associated with this event, that is the window which had the
@@ -1492,14 +1636,14 @@ public:
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
-    @see @ref overview_eventhandlingoverview
+    @see @ref overview_eventhandling
 */
 class wxChildFocusEvent : public wxCommandEvent
 {
 public:
     /**
         Constructor.
 */
 class wxChildFocusEvent : public wxCommandEvent
 {
 public:
     /**
         Constructor.
-        
+
         @param win
             The direct child which is (or which contains the window which is) receiving
         the focus.
         @param win
             The direct child which is (or which contains the window which is) receiving
         the focus.
@@ -1533,7 +1677,7 @@ public:
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
-    @see wxMouseCaptureChangedEvent, @ref overview_eventhandlingoverview,
+    @see wxMouseCaptureChangedEvent, @ref overview_eventhandling,
     wxWindow::CaptureMouse, wxWindow::ReleaseMouse, wxWindow::GetCapture
 */
 class wxMouseCaptureLostEvent : public wxEvent
     wxWindow::CaptureMouse, wxWindow::ReleaseMouse, wxWindow::GetCapture
 */
 class wxMouseCaptureLostEvent : public wxEvent
@@ -1622,56 +1766,66 @@ public:
     since processing would stop after the first window found.
 
     @library{wxcore}
     since processing would stop after the first window found.
 
     @library{wxcore}
-    @category{FIXME}
+    @category{events}
 
 
-    @see wxContextHelp, wxDialog, @ref overview_eventhandlingoverview
+    @see wxContextHelp, wxDialog, @ref overview_eventhandling
 */
 class wxHelpEvent : public wxCommandEvent
 {
 public:
 */
 class wxHelpEvent : public wxCommandEvent
 {
 public:
+    // how was this help event generated?
+    enum Origin
+    {
+        Origin_Unknown,    // unrecognized event source
+        Origin_Keyboard,   // event generated from F1 key press
+        Origin_HelpButton  // event from [?] button on the title bar (Windows)
+    };
+
     /**
         Constructor.
     */
     /**
         Constructor.
     */
-    wxHelpEvent(WXTYPE eventType = 0, wxWindowID id = 0,
-                const wxPoint& point);
+    wxHelpEvent(wxEventType type = wxEVT_NULL,
+                wxWindowID winid = 0,
+                const wxPoint& pt = wxDefaultPosition,
+                Origin origin = Origin_Unknown);
 
     /**
         Returns the origin of the help event which is one of the following values:
 
     /**
         Returns the origin of the help event which is one of the following values:
-        
+
         @b Origin_Unknown
         @b Origin_Unknown
-        
+
         Unrecognized event source.
         Unrecognized event source.
-        
+
         @b Origin_Keyboard
         @b Origin_Keyboard
-        
+
         Event generated by @c F1 key press.
         Event generated by @c F1 key press.
-        
+
         @b Origin_HelpButton
         @b Origin_HelpButton
-        
+
         Event generated by
         wxContextHelp or using the "?" title bur button under
         MS Windows.
         Event generated by
         wxContextHelp or using the "?" title bur button under
         MS Windows.
-        
+
         The application may handle events generated using the keyboard or mouse
         differently, e.g. by using wxGetMousePosition()
         for the mouse events.
         The application may handle events generated using the keyboard or mouse
         differently, e.g. by using wxGetMousePosition()
         for the mouse events.
-        
+
         @see SetOrigin()
     */
         @see SetOrigin()
     */
-    wxHelpEvent::Origin GetOrigin() const;
+    Origin GetOrigin() const;
 
     /**
         Returns the left-click position of the mouse, in screen coordinates. This allows
         the application to position the help appropriately.
     */
 
     /**
         Returns the left-click position of the mouse, in screen coordinates. This allows
         the application to position the help appropriately.
     */
-    const wxPoint GetPosition() const;
+    const wxPoint& GetPosition() const;
 
     /**
         Set the help event origin, only used internally by wxWidgets normally.
 
     /**
         Set the help event origin, only used internally by wxWidgets normally.
-        
+
         @see GetOrigin()
     */
         @see GetOrigin()
     */
-    void SetOrigin(wxHelpEvent::Origin origin);
+    void SetOrigin(Origin);
 
     /**
         Sets the left-click position of the mouse, in screen coordinates.
 
     /**
         Sets the left-click position of the mouse, in screen coordinates.
@@ -1697,7 +1851,7 @@ public:
     @category{events}
 
     @see wxScrollBar, wxSlider, wxSpinButton, , wxScrollWinEvent, @ref
     @category{events}
 
     @see wxScrollBar, wxSlider, wxSpinButton, , wxScrollWinEvent, @ref
-    overview_eventhandlingoverview
+    overview_eventhandling
 */
 class wxScrollEvent : public wxCommandEvent
 {
 */
 class wxScrollEvent : public wxCommandEvent
 {
@@ -1705,7 +1859,7 @@ public:
     /**
         Constructor.
     */
     /**
         Constructor.
     */
-    wxScrollEvent(WXTYPE commandType = 0, int id = 0, int pos = 0,
+    wxScrollEvent(wxEventType commandType = 0, int id = 0, int pos = 0,
                   int orientation = 0);
 
     /**
                   int orientation = 0);
 
     /**
@@ -1746,7 +1900,7 @@ public:
     @library{wxbase}
     @category{events}
 
     @library{wxbase}
     @category{events}
 
-    @see @ref overview_eventhandlingoverview, wxUpdateUIEvent,
+    @see @ref overview_eventhandling, wxUpdateUIEvent,
     wxWindow::OnInternalIdle
 */
 class wxIdleEvent : public wxEvent
     wxWindow::OnInternalIdle
 */
 class wxIdleEvent : public wxEvent
@@ -1767,7 +1921,7 @@ public:
         the update mode is initially wxIDLE_PROCESS_ALL. You can change the mode
         to only send idle events to windows with the wxWS_EX_PROCESS_IDLE extra window
         style set.
         the update mode is initially wxIDLE_PROCESS_ALL. You can change the mode
         to only send idle events to windows with the wxWS_EX_PROCESS_IDLE extra window
         style set.
-        
+
         @see SetMode()
     */
     static bool CanSend(wxWindow* window);
         @see SetMode()
     */
     static bool CanSend(wxWindow* window);
@@ -1783,7 +1937,7 @@ public:
     /**
         Returns @true if the OnIdle function processing this event requested more
         processing time.
     /**
         Returns @true if the OnIdle function processing this event requested more
         processing time.
-        
+
         @see RequestMore()
     */
     bool MoreRequested() const;
         @see RequestMore()
     */
     bool MoreRequested() const;
@@ -1798,7 +1952,7 @@ public:
         during OnIdle, then the application will remain in a passive event loop (not
         calling OnIdle) until a
         new event is posted to the application by the windowing system.
         during OnIdle, then the application will remain in a passive event loop (not
         calling OnIdle) until a
         new event is posted to the application by the windowing system.
-        
+
         @see MoreRequested()
     */
     void RequestMore(bool needMore = true);
         @see MoreRequested()
     */
     void RequestMore(bool needMore = true);
@@ -1826,7 +1980,7 @@ public:
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
-    @see @ref overview_eventhandlingoverview
+    @see @ref overview_eventhandling
 */
 class wxInitDialogEvent : public wxEvent
 {
 */
 class wxInitDialogEvent : public wxEvent
 {
@@ -1859,7 +2013,7 @@ public:
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
-    @see @ref overview_eventhandlingoverview, wxWindowCreateEvent
+    @see @ref overview_eventhandling, wxWindowCreateEvent
 */
 class wxWindowDestroyEvent : public wxCommandEvent
 {
 */
 class wxWindowDestroyEvent : public wxCommandEvent
 {
@@ -1967,7 +2121,7 @@ public:
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
-    @see wxMouseCaptureLostEvent, @ref overview_eventhandlingoverview,
+    @see wxMouseCaptureLostEvent, @ref overview_eventhandling,
     wxWindow::CaptureMouse, wxWindow::ReleaseMouse, wxWindow::GetCapture
 */
 class wxMouseCaptureChangedEvent : public wxEvent
     wxWindow::CaptureMouse, wxWindow::ReleaseMouse, wxWindow::GetCapture
 */
 class wxMouseCaptureChangedEvent : public wxEvent
@@ -2024,7 +2178,7 @@ public:
     /**
         Constructor.
     */
     /**
         Constructor.
     */
-    wxCloseEvent(WXTYPE commandEventType = 0, int id = 0);
+    wxCloseEvent(wxEventType commandEventType = 0, int id = 0);
 
     /**
         Returns @true if you can veto a system shutdown or a window close event.
 
     /**
         Returns @true if you can veto a system shutdown or a window close event.
@@ -2032,7 +2186,7 @@ public:
         force the application to exit, and so this function must be called to check
         this.
     */
         force the application to exit, and so this function must be called to check
         this.
     */
-    bool CanVeto();
+    bool CanVeto() const;
 
     /**
         Returns @true if the user is just logging off or @false if the system is
 
     /**
         Returns @true if the user is just logging off or @false if the system is
@@ -2054,7 +2208,7 @@ public:
     /**
         Sets the 'logging off' flag.
     */
     /**
         Sets the 'logging off' flag.
     */
-    void SetLoggingOff(bool loggingOff) const;
+    void SetLoggingOff(bool loggingOff);
 
     /**
         Call this from your event handler to veto a system shutdown or to signal
 
     /**
         Call this from your event handler to veto a system shutdown or to signal
@@ -2082,7 +2236,7 @@ public:
     @category{events}
 
     @see @ref overview_wxcommandevent "Command events", @ref
     @category{events}
 
     @see @ref overview_wxcommandevent "Command events", @ref
-    overview_eventhandlingoverview
+    overview_eventhandling
 */
 class wxMenuEvent : public wxEvent
 {
 */
 class wxMenuEvent : public wxEvent
 {
@@ -2090,7 +2244,7 @@ public:
     /**
         Constructor.
     */
     /**
         Constructor.
     */
-    wxMenuEvent(WXTYPE id = 0, int id = 0, wxMenu* menu = NULL);
+    wxMenuEvent(wxEventType id = 0, int id = 0, wxMenu* menu = NULL);
 
     /**
         Returns the menu which is being opened or closed. This method should only be
 
     /**
         Returns the menu which is being opened or closed. This method should only be
@@ -2140,9 +2294,9 @@ public:
     @endcode
 
     @library{wxcore}
     @endcode
 
     @library{wxcore}
-    @category{FIXME}
+    @category{events}
 
 
-    @see @ref overview_eventhandlingoverview, wxEvtHandler
+    @see @ref overview_eventhandling, wxEvtHandler
 */
 class wxEventBlocker : public wxEvtHandler
 {
 */
 class wxEventBlocker : public wxEvtHandler
 {
@@ -2155,14 +2309,14 @@ public:
         Note that the @a win window @b must remain alive until the
         wxEventBlocker object destruction.
     */
         Note that the @a win window @b must remain alive until the
         wxEventBlocker object destruction.
     */
-    wxEventBlocker(wxWindow* win, wxEventType type = wxEVT_ANY);
+    wxEventBlocker(wxWindow* win, wxEventType = -0x000000001);
 
     /**
         Destructor. The blocker will remove itself from the chain of event handlers for
         the window provided in the constructor, thus restoring normal processing of
         events.
     */
 
     /**
         Destructor. The blocker will remove itself from the chain of event handlers for
         the window provided in the constructor, thus restoring normal processing of
         events.
     */
-    ~wxEventBlocker();
+    virtual ~wxEventBlocker();
 
     /**
         Adds to the list of event types which should be blocked the given @e eventType.
 
     /**
         Adds to the list of event types which should be blocked the given @e eventType.
@@ -2187,9 +2341,9 @@ public:
     will be identical to the "this" pointer for the wxEvtHandler portion.
 
     @library{wxbase}
     will be identical to the "this" pointer for the wxEvtHandler portion.
 
     @library{wxbase}
-    @category{FIXME}
+    @category{events}
 
 
-    @see @ref overview_eventhandlingoverview
+    @see @ref overview_eventhandling
 */
 class wxEvtHandler : public wxObject
 {
 */
 class wxEvtHandler : public wxObject
 {
@@ -2204,14 +2358,14 @@ public:
         unlink itself and restore the previous and next handlers so that they point to
         each other.
     */
         unlink itself and restore the previous and next handlers so that they point to
         each other.
     */
-    ~wxEvtHandler();
+    virtual ~wxEvtHandler();
 
     /**
         This function posts an event to be processed later.
 
     /**
         This function posts an event to be processed later.
-        
+
         @param event
             Event to add to process queue.
         @param event
             Event to add to process queue.
-        
+
         @remarks The difference between sending an event (using the ProcessEvent
                  method) and posting it is that in the first case the
                  event is processed before the function returns, while
         @remarks The difference between sending an event (using the ProcessEvent
                  method) and posting it is that in the first case the
                  event is processed before the function returns, while
@@ -2227,7 +2381,7 @@ public:
         type. This
         is an alternative to the use of static event tables. See the 'event' or the old
         'dynamic' sample for usage.
         type. This
         is an alternative to the use of static event tables. See the 'event' or the old
         'dynamic' sample for usage.
-        
+
         @param id
             The identifier (or first of the identifier range) to be
             associated with the event handler function. For the version not taking this
         @param id
             The identifier (or first of the identifier range) to be
             associated with the event handler function. For the version not taking this
@@ -2270,7 +2424,7 @@ public:
         added
         using the Connect() method. There is no way
         to disconnect functions connected using the (static) event tables.
         added
         using the Connect() method. There is no way
         to disconnect functions connected using the (static) event tables.
-        
+
         @param id
             The identifier (or first of the identifier range) associated with the event
         handler function.
         @param id
             The identifier (or first of the identifier range) associated with the event
         handler function.
@@ -2304,62 +2458,62 @@ public:
 
     /**
         Gets user-supplied client data.
 
     /**
         Gets user-supplied client data.
-        
+
         @remarks Normally, any extra data the programmer wishes to associate with
                  the object should be made available by deriving a new
                  class with new data members.
         @remarks Normally, any extra data the programmer wishes to associate with
                  the object should be made available by deriving a new
                  class with new data members.
-        
+
         @see SetClientData()
     */
         @see SetClientData()
     */
-    void* GetClientData();
+    void* GetClientData() const;
 
     /**
         Get a pointer to the user-supplied client data object.
 
     /**
         Get a pointer to the user-supplied client data object.
-        
+
         @see SetClientObject(), wxClientData
     */
     wxClientData* GetClientObject() const;
 
     /**
         Returns @true if the event handler is enabled, @false otherwise.
         @see SetClientObject(), wxClientData
     */
     wxClientData* GetClientObject() const;
 
     /**
         Returns @true if the event handler is enabled, @false otherwise.
-        
+
         @see SetEvtHandlerEnabled()
     */
         @see SetEvtHandlerEnabled()
     */
-    bool GetEvtHandlerEnabled();
+    bool GetEvtHandlerEnabled() const;
 
     /**
         Gets the pointer to the next handler in the chain.
 
     /**
         Gets the pointer to the next handler in the chain.
-        
+
         @see SetNextHandler(), GetPreviousHandler(),
              SetPreviousHandler(), wxWindow::PushEventHandler,
              wxWindow::PopEventHandler
     */
         @see SetNextHandler(), GetPreviousHandler(),
              SetPreviousHandler(), wxWindow::PushEventHandler,
              wxWindow::PopEventHandler
     */
-    wxEvtHandler* GetNextHandler();
+    wxEvtHandler* GetNextHandler() const;
 
     /**
         Gets the pointer to the previous handler in the chain.
 
     /**
         Gets the pointer to the previous handler in the chain.
-        
+
         @see SetPreviousHandler(), GetNextHandler(),
              SetNextHandler(), wxWindow::PushEventHandler,
              wxWindow::PopEventHandler
     */
         @see SetPreviousHandler(), GetNextHandler(),
              SetNextHandler(), wxWindow::PushEventHandler,
              wxWindow::PopEventHandler
     */
-    wxEvtHandler* GetPreviousHandler();
+    wxEvtHandler* GetPreviousHandler() const;
 
     /**
         Processes an event, searching event tables and calling zero or more suitable
         event handler function(s).
 
     /**
         Processes an event, searching event tables and calling zero or more suitable
         event handler function(s).
-        
+
         @param event
             Event to process.
         @param event
             Event to process.
-        
+
         @returns @true if a suitable event handler function was found and
                  executed, and the function did not call wxEvent::Skip.
         @returns @true if a suitable event handler function was found and
                  executed, and the function did not call wxEvent::Skip.
-        
+
         @remarks Normally, your application would not call this function: it is
                  called in the wxWidgets implementation to dispatch
                  incoming user interface events to the framework (and
                  application).
         @remarks Normally, your application would not call this function: it is
                  called in the wxWidgets implementation to dispatch
                  incoming user interface events to the framework (and
                  application).
-        
+
         @see SearchEventTable()
     */
     virtual bool ProcessEvent(wxEvent& event);
         @see SearchEventTable()
     */
     virtual bool ProcessEvent(wxEvent& event);
@@ -2369,13 +2523,13 @@ public:
         and handles any exceptions that occur in the process. If an exception is
         thrown in event handler, wxApp::OnExceptionInMainLoop
         is called.
         and handles any exceptions that occur in the process. If an exception is
         thrown in event handler, wxApp::OnExceptionInMainLoop
         is called.
-        
+
         @param event
             Event to process.
         @param event
             Event to process.
-        
+
         @returns @true if the event was processed, @false if no handler was found
                  or an exception was thrown.
         @returns @true if the event was processed, @false if no handler was found
                  or an exception was thrown.
-        
+
         @see wxWindow::HandleWindowEvent
     */
     bool SafelyProcessEvent(wxEvent& event);
         @see wxWindow::HandleWindowEvent
     */
     bool SafelyProcessEvent(wxEvent& event);
@@ -2384,18 +2538,18 @@ public:
         Searches the event table, executing an event handler function if an appropriate
         one
         is found.
         Searches the event table, executing an event handler function if an appropriate
         one
         is found.
-        
+
         @param table
             Event table to be searched.
         @param event
             Event to be matched against an event table entry.
         @param table
             Event table to be searched.
         @param event
             Event to be matched against an event table entry.
-        
+
         @returns @true if a suitable event handler function was found and
                  executed, and the function did not call wxEvent::Skip.
         @returns @true if a suitable event handler function was found and
                  executed, and the function did not call wxEvent::Skip.
-        
+
         @remarks This function looks through the object's event table and tries
                  to find an entry that will match the event.
         @remarks This function looks through the object's event table and tries
                  to find an entry that will match the event.
-        
+
         @see ProcessEvent()
     */
     virtual bool SearchEventTable(wxEventTable& table,
         @see ProcessEvent()
     */
     virtual bool SearchEventTable(wxEventTable& table,
@@ -2403,47 +2557,47 @@ public:
 
     /**
         Sets user-supplied client data.
 
     /**
         Sets user-supplied client data.
-        
+
         @param data
             Data to be associated with the event handler.
         @param data
             Data to be associated with the event handler.
-        
+
         @remarks Normally, any extra data the programmer wishes to associate with
                   the object should be made available by deriving a new
                  class with new data members. You must not call this
                  method and SetClientObject on the same class - only one
                  of them.
         @remarks Normally, any extra data the programmer wishes to associate with
                   the object should be made available by deriving a new
                  class with new data members. You must not call this
                  method and SetClientObject on the same class - only one
                  of them.
-        
+
         @see GetClientData()
     */
     void SetClientData(void* data);
 
     /**
         Set the client data object. Any previous object will be deleted.
         @see GetClientData()
     */
     void SetClientData(void* data);
 
     /**
         Set the client data object. Any previous object will be deleted.
-        
+
         @see GetClientObject(), wxClientData
     */
     void SetClientObject(wxClientData* data);
 
     /**
         Enables or disables the event handler.
         @see GetClientObject(), wxClientData
     */
     void SetClientObject(wxClientData* data);
 
     /**
         Enables or disables the event handler.
-        
+
         @param enabled
             @true if the event handler is to be enabled, @false if it is to be disabled.
         @param enabled
             @true if the event handler is to be enabled, @false if it is to be disabled.
-        
+
         @remarks You can use this function to avoid having to remove the event
                  handler from the chain, for example when implementing a
                  dialog editor and changing from edit to test mode.
         @remarks You can use this function to avoid having to remove the event
                  handler from the chain, for example when implementing a
                  dialog editor and changing from edit to test mode.
-        
+
         @see GetEvtHandlerEnabled()
     */
     void SetEvtHandlerEnabled(bool enabled);
 
     /**
         Sets the pointer to the next handler.
         @see GetEvtHandlerEnabled()
     */
     void SetEvtHandlerEnabled(bool enabled);
 
     /**
         Sets the pointer to the next handler.
-        
+
         @param handler
             Event handler to be set as the next handler.
         @param handler
             Event handler to be set as the next handler.
-        
+
         @see GetNextHandler(), SetPreviousHandler(),
              GetPreviousHandler(), wxWindow::PushEventHandler,
              wxWindow::PopEventHandler
         @see GetNextHandler(), SetPreviousHandler(),
              GetPreviousHandler(), wxWindow::PushEventHandler,
              wxWindow::PopEventHandler
@@ -2452,7 +2606,7 @@ public:
 
     /**
         Sets the pointer to the previous handler.
 
     /**
         Sets the pointer to the previous handler.
-        
+
         @param handler
             Event handler to be set as the previous handler.
     */
         @param handler
             Event handler to be set as the previous handler.
     */
@@ -2472,7 +2626,7 @@ public:
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
-    @see @ref overview_eventhandlingoverview, wxTopLevelWindow::Iconize,
+    @see @ref overview_eventhandling, wxTopLevelWindow::Iconize,
     wxTopLevelWindow::IsIconized
 */
 class wxIconizeEvent : public wxEvent
     wxTopLevelWindow::IsIconized
 */
 class wxIconizeEvent : public wxEvent
@@ -2501,7 +2655,7 @@ public:
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
-    @see wxPoint, @ref overview_eventhandlingoverview
+    @see wxPoint, @ref overview_eventhandling
 */
 class wxMoveEvent : public wxEvent
 {
 */
 class wxMoveEvent : public wxEvent
 {
@@ -2527,7 +2681,7 @@ public:
     callback or member function. @b wxEvent used to be a multipurpose
     event object, and is an abstract base class for other event classes (see below).
 
     callback or member function. @b wxEvent used to be a multipurpose
     event object, and is an abstract base class for other event classes (see below).
 
-    For more information about events, see the @ref overview_eventhandlingoverview.
+    For more information about events, see the @ref overview_eventhandling.
 
     @b wxPerl note: In wxPerl custom event classes should be derived from
     @c Wx::PlEvent and @c Wx::PlCommandEvent.
 
     @b wxPerl note: In wxPerl custom event classes should be derived from
     @c Wx::PlEvent and @c Wx::PlCommandEvent.
@@ -2557,19 +2711,19 @@ public:
         implementing the Clone function is to implement a copy constructor for
         a new event (call it MyEvent) and then define the Clone function like this:
     */
         implementing the Clone function is to implement a copy constructor for
         a new event (call it MyEvent) and then define the Clone function like this:
     */
-    virtual wxEvent* Clone() const;
+    virtual wxEvent* Clone() const = 0;
 
     /**
         Returns the object (usually a window) associated with the
         event, if any.
     */
 
     /**
         Returns the object (usually a window) associated with the
         event, if any.
     */
-    wxObject* GetEventObject();
+    wxObject* GetEventObject() const;
 
     /**
         Returns the identifier of the given event type,
         such as @c wxEVT_COMMAND_BUTTON_CLICKED.
     */
 
     /**
         Returns the identifier of the given event type,
         such as @c wxEVT_COMMAND_BUTTON_CLICKED.
     */
-    wxEventType GetEventType();
+    wxEventType GetEventType() const;
 
     /**
         Returns the identifier associated with this event, such as a button command id.
 
     /**
         Returns the identifier associated with this event, such as a button command id.
@@ -2587,7 +2741,7 @@ public:
         only differences between the timestamps and not their absolute values usually
         make sense).
     */
         only differences between the timestamps and not their absolute values usually
         make sense).
     */
-    long GetTimestamp();
+    long GetTimestamp() const;
 
     /**
         Returns @true if the event is or is derived from
 
     /**
         Returns @true if the event is or is derived from
@@ -2620,7 +2774,7 @@ public:
     /**
         Sets the timestamp for the event.
     */
     /**
         Sets the timestamp for the event.
     */
-    void SetTimestamp(long timeStamp);
+    void SetTimestamp(long = 0);
 
     /**
         Test if this event should be propagated or not, i.e. if the propagation level
 
     /**
         Test if this event should be propagated or not, i.e. if the propagation level
@@ -2695,7 +2849,7 @@ public:
     @library{wxcore}
     @category{events}
 
     @library{wxcore}
     @category{events}
 
-    @see wxSize, @ref overview_eventhandlingoverview
+    @see wxSize, @ref overview_eventhandling
 */
 class wxSizeEvent : public wxEvent
 {
 */
 class wxSizeEvent : public wxEvent
 {
@@ -2724,7 +2878,7 @@ public:
     specify the cursor you want to be displayed.
 
     @library{wxcore}
     specify the cursor you want to be displayed.
 
     @library{wxcore}
-    @category{FIXME}
+    @category{events}
 
     @see ::wxSetCursor, wxWindow::wxSetCursor
 */
 
     @see ::wxSetCursor, wxWindow::wxSetCursor
 */
@@ -2740,7 +2894,7 @@ public:
     /**
         Returns a reference to the cursor specified by this event.
     */
     /**
         Returns a reference to the cursor specified by this event.
     */
-    wxCursor GetCursor() const;
+    const wxCursor& GetCursor() const;
 
     /**
         Returns the X coordinate of the mouse in client coordinates.
 
     /**
         Returns the X coordinate of the mouse in client coordinates.
@@ -2754,7 +2908,7 @@ public:
 
     /**
         Returns @true if the cursor specified by this event is a valid cursor.
 
     /**
         Returns @true if the cursor specified by this event is a valid cursor.
-        
+
         @remarks You cannot specify wxNullCursor with this event, as it is not
                  considered a valid cursor.
     */
         @remarks You cannot specify wxNullCursor with this event, as it is not
                  considered a valid cursor.
     */
@@ -2768,11 +2922,24 @@ public:
 
 
 
 
 
 
+// ============================================================================
+// Global functions/macros
+// ============================================================================
+
+/** @ingroup group_funcmacro_misc */
+//@{
+
 /**
     In a GUI application, this function posts @a event to the specified @e dest
 /**
     In a GUI application, this function posts @a event to the specified @e dest
-    object using wxEvtHandler::AddPendingEvent.
+    object using wxEvtHandler::AddPendingEvent().
+
+    Otherwise, it dispatches @a event immediately using
+    wxEvtHandler::ProcessEvent(). See the respective documentation for details
+    (and caveats).
 
 
-    Otherwise, it dispatches @a event immediately using wxEvtHandler::ProcessEvent.
-    See the respective documentation for details (and caveats).
+    @header{wx/event.h}
 */
 */
-void wxPostEvent(wxEvtHandler* dest, wxEvent& event);
\ No newline at end of file
+void wxPostEvent(wxEvtHandler* dest, wxEvent& event);
+
+//@}
+