1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: documentation for wxKeyEvent class
4 // Author: wxWidgets team
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
13 This event class contains information about keypress (character) events.
15 Notice that there are three different kinds of keyboard events in wxWidgets:
16 key down and up events and char events. The difference between the first two
17 is clear - the first corresponds to a key press and the second to a key
18 release - otherwise they are identical. Just note that if the key is
19 maintained in a pressed state you will typically get a lot of (automatically
20 generated) down events but only one up so it is wrong to assume that there is
21 one up event corresponding to each down one.
23 Both key events provide untranslated key codes while the char event carries
24 the translated one. The untranslated code for alphanumeric keys is always
25 an upper case value. For the other keys it is one of @c WXK_XXX values
26 from the @ref overview_keycodes "keycodes table". The translated key is, in
27 general, the character the user expects to appear as the result of the key
28 combination when typing the text into a text entry zone, for example.
30 A few examples to clarify this (all assume that CAPS LOCK is unpressed
31 and the standard US keyboard): when the @c 'A' key is pressed, the key down
32 event key code is equal to @c ASCII A == 65. But the char event key code
33 is @c ASCII a == 97. On the other hand, if you press both SHIFT and
34 @c 'A' keys simultaneously , the key code in key down event will still be
35 just @c 'A' while the char event key code parameter will now be @c 'A'
38 Although in this simple case it is clear that the correct key code could be
39 found in the key down event handler by checking the value returned by
40 wxKeyEvent::ShiftDown, in general you should use
41 @c EVT_CHAR for this as for non-alphanumeric keys the translation is
42 keyboard-layout dependent and can only be done properly by the system itself.
44 Another kind of translation is done when the control key is pressed: for
45 example, for CTRL-A key press the key down event still carries the
46 same key code @c 'a' as usual but the char event will have key code of
47 1, the ASCII value of this key combination.
49 You may discover how the other keys on your system behave interactively by
50 running the text wxWidgets sample and pressing some keys
51 in any of the text controls shown in it.
53 @b Note: If a key down (@c EVT_KEY_DOWN) event is caught and
54 the event handler does not call @c event.Skip() then the corresponding
55 char event (@c EVT_CHAR) will not happen. This is by design and
56 enables the programs that handle both types of events to be a bit
59 @b Note for Windows programmers: The key and char events in wxWidgets are
60 similar to but slightly different from Windows @c WM_KEYDOWN and
61 @c WM_CHAR events. In particular, Alt-x combination will generate a char
62 event in wxWidgets (unless it is used as an accelerator).
64 @b Tip: be sure to call @c event.Skip() for events that you don't process in
65 key event function, otherwise menu shortcuts may cease to work under Windows.
70 class wxKeyEvent
: public wxEvent
74 Constructor. Currently, the only valid event types are wxEVT_CHAR and
77 wxKeyEvent(WXTYPE keyEventType
);
80 Returns @true if the Alt key was down at the time of the key event.
82 Notice that GetModifiers() is easier to use
83 correctly than this function so you should consider using it in new code.
88 CMD is a pseudo key which is the same as Control for PC and Unix
89 platforms but the special APPLE (a.k.a as COMMAND) key under
90 Macs: it makes often sense to use it instead of, say, ControlDown() because Cmd
91 key is used for the same thing under Mac as Ctrl elsewhere (but Ctrl still
92 exists, just not used for this purpose under Mac). So for non-Mac platforms
93 this is the same as ControlDown() and under
94 Mac this is the same as MetaDown().
99 Returns @true if the control key was down at the time of the key event.
101 Notice that GetModifiers() is easier to use
102 correctly than this function so you should consider using it in new code.
107 Returns the virtual key code. ASCII events return normal ASCII values,
108 while non-ASCII events return values such as @b WXK_LEFT for the
109 left cursor key. See Keycodes for a full list of
110 the virtual key codes.
112 Note that in Unicode build, the returned value is meaningful only if the
113 user entered a character that can be represented in current locale's default
114 charset. You can obtain the corresponding Unicode character using
120 Return the bitmask of modifier keys which were pressed when this event
121 happened. See @ref overview_keymodifiers "key modifier constants" for the full
125 Notice that this function is easier to use correctly than, for example,
126 ControlDown() because when using the latter you
127 also have to remember to test that none of the other modifiers is pressed:
128 and forgetting to do it can result in serious program bugs (e.g. program not
129 working with European keyboard layout where ALTGR key which is seen by
130 the program as combination of CTRL and ALT is used). On the
131 other hand, you can simply write
138 Obtains the position (in client coordinates) at which the key was pressed.
140 wxPoint
GetPosition();
141 void GetPosition(long * x
, long * y
);
145 Returns the raw key code for this event. This is a platform-dependent scan code
146 which should only be used in advanced applications.
148 @b NB: Currently the raw key codes are not supported by all ports, use
149 @c #ifdef wxHAS_RAW_KEY_CODES to determine if this feature is available.
151 wxUint32
GetRawKeyCode();
154 Returns the low level key flags for this event. The flags are
155 platform-dependent and should only be used in advanced applications.
157 @b NB: Currently the raw key flags are not supported by all ports, use
158 @c #ifdef wxHAS_RAW_KEY_CODES to determine if this feature is available.
160 wxUint32
GetRawKeyFlags();
163 Returns the Unicode character corresponding to this key event.
165 This function is only available in Unicode build, i.e. when
166 @c wxUSE_UNICODE is 1.
168 wxChar
GetUnicodeKey();
171 Returns the X position (in client coordinates) of the event.
173 #define long GetX() /* implementation is private */
176 Returns the Y (in client coordinates) position of the event.
178 #define long GetY() /* implementation is private */
181 Returns @true if either CTRL or ALT keys was down
182 at the time of the key event. Note that this function does not take into
183 account neither SHIFT nor META key states (the reason for ignoring
184 the latter is that it is common for NUMLOCK key to be configured as
185 META under X but the key presses even while NUMLOCK is on should
186 be still processed normally).
191 Returns @true if the Meta key was down at the time of the key event.
193 Notice that GetModifiers() is easier to use
194 correctly than this function so you should consider using it in new code.
199 Returns @true if the shift key was down at the time of the key event.
201 Notice that GetModifiers() is easier to use
202 correctly than this function so you should consider using it in new code.
209 @b Deprecated: Please use GetModifiers()
212 @true if the Alt key is pressed down.
219 @b Deprecated: Please use GetModifiers()
222 @true if control is pressed down.
229 @b Deprecated: Please use GetKeyCode()
232 Virtual keycode. See Keycodes for a list of identifiers.
239 @b Deprecated: Please use GetModifiers()
242 @true if the Meta key is pressed down.
249 @b Deprecated: Please use GetModifiers()
252 @true if shift is pressed down.
259 @b Deprecated: Please use GetX() instead!
261 X position of the event.
268 @b Deprecated: Please use GetY() instead!
270 Y position of the event.
276 @class wxJoystickEvent
279 This event class contains information about mouse events, particularly
280 events received by windows.
288 class wxJoystickEvent
: public wxEvent
294 wxJoystickEvent(WXTYPE eventType
= 0, int state
= 0,
295 int joystick
= wxJOYSTICK1
,
299 Returns @true if the event was a down event from the specified button (or any
303 Can be wxJOY_BUTTONn where n is 1, 2, 3 or 4; or wxJOY_BUTTON_ANY to
304 indicate any button down event.
306 bool ButtonDown(int button
= wxJOY_BUTTON_ANY
);
309 Returns @true if the specified button (or any button) was in a down state.
312 Can be wxJOY_BUTTONn where n is 1, 2, 3 or 4; or wxJOY_BUTTON_ANY to
313 indicate any button down event.
315 bool ButtonIsDown(int button
= wxJOY_BUTTON_ANY
);
318 Returns @true if the event was an up event from the specified button (or any
322 Can be wxJOY_BUTTONn where n is 1, 2, 3 or 4; or wxJOY_BUTTON_ANY to
323 indicate any button down event.
325 bool ButtonUp(int button
= wxJOY_BUTTON_ANY
);
328 Returns the identifier of the button changing state. This is a wxJOY_BUTTONn
330 n is one of 1, 2, 3, 4.
332 int GetButtonChange();
335 Returns the down state of the buttons. This is a bitlist of wxJOY_BUTTONn
337 n is one of 1, 2, 3, 4.
339 int GetButtonState();
342 Returns the identifier of the joystick generating the event - one of
343 wxJOYSTICK1 and wxJOYSTICK2.
348 Returns the x, y position of the joystick event.
350 wxPoint
GetPosition();
353 Returns the z position of the joystick event.
358 Returns @true if this was a button up or down event (@e not 'is any button
364 Returns @true if this was an x, y move event.
369 Returns @true if this was a z move event.
376 @class wxScrollWinEvent
379 A scroll event holds information about events sent from scrolling windows.
385 wxScrollEvent, @ref overview_eventhandlingoverview "Event handling overview"
387 class wxScrollWinEvent
: public wxEvent
393 wxScrollWinEvent(WXTYPE commandType
= 0, int pos
= 0,
394 int orientation
= 0);
397 Returns wxHORIZONTAL or wxVERTICAL, depending on the orientation of the
400 int GetOrientation();
403 Returns the position of the scrollbar for the thumb track and release events.
404 Note that this field can't be used for the other events, you need to query
405 the window itself for the current position in that case.
412 @class wxSysColourChangedEvent
415 This class is used for system colour change events, which are generated
416 when the user changes the colour settings using the control panel.
417 This is only appropriate under Windows.
423 @ref overview_eventhandlingoverview "Event handling overview"
425 class wxSysColourChangedEvent
: public wxEvent
431 wxSysColourChangedEvent();
436 @class wxWindowCreateEvent
439 This event is sent just after the actual window associated with a wxWindow
441 has been created. Since it is derived from wxCommandEvent, the event propagates
443 the window hierarchy.
449 @ref overview_eventhandlingoverview "Event handling overview",
452 class wxWindowCreateEvent
: public wxCommandEvent
458 wxWindowCreateEvent(wxWindow
* win
= @NULL
);
466 A paint event is sent when a window's contents needs to be repainted.
468 Please notice that in general it is impossible to change the drawing of a
469 standard control (such as wxButton) and so you shouldn't
470 attempt to handle paint events for them as even if it might work on some
471 platforms, this is inherently not portable and won't work everywhere.
477 @ref overview_eventhandlingoverview "Event handling overview"
479 class wxPaintEvent
: public wxEvent
485 wxPaintEvent(int id
= 0);
490 @class wxMaximizeEvent
493 An event being sent when a top level window is maximized. Notice that it is
494 not sent when the window is restored to its original size after it had been
495 maximized, only a normal wxSizeEvent is generated in
502 @ref overview_eventhandlingoverview "Event handling overview",
503 wxTopLevelWindow::Maximize, wxTopLevelWindow::IsMaximized
505 class wxMaximizeEvent
: public wxEvent
509 Constructor. Only used by wxWidgets internally.
511 wxMaximizeEvent(int id
= 0);
516 @class wxUpdateUIEvent
519 This class is used for pseudo-events which are called by wxWidgets
520 to give an application the chance to update various user interface elements.
526 @ref overview_eventhandlingoverview "Event handling overview"
528 class wxUpdateUIEvent
: public wxCommandEvent
534 wxUpdateUIEvent(wxWindowID commandId
= 0);
537 Returns @true if it is appropriate to update (send UI update events to)
540 This function looks at the mode used (see wxUpdateUIEvent::SetMode),
541 the wxWS_EX_PROCESS_UI_UPDATES flag in @e window,
542 the time update events were last sent in idle time, and
543 the update interval, to determine whether events should be sent to
544 this window now. By default this will always return @true because
545 the update mode is initially wxUPDATE_UI_PROCESS_ALL and
546 the interval is set to 0; so update events will be sent as
547 often as possible. You can reduce the frequency that events
548 are sent by changing the mode and/or setting an update interval.
550 @sa ResetUpdateTime(), SetUpdateInterval(),
553 static bool CanUpdate(wxWindow
* window
);
556 Check or uncheck the UI element.
558 void Check(bool check
);
561 Enable or disable the UI element.
563 void Enable(bool enable
);
566 Returns @true if the UI element should be checked.
571 Returns @true if the UI element should be enabled.
576 Static function returning a value specifying how wxWidgets
577 will send update events: to all windows, or only to those which specify that
579 will process the events.
583 static wxUpdateUIMode
GetMode();
586 Returns @true if the application has called Check(). For wxWidgets internal use
589 bool GetSetChecked();
592 Returns @true if the application has called Enable(). For wxWidgets internal use
595 bool GetSetEnabled();
598 Returns @true if the application has called Show(). For wxWidgets internal use
604 Returns @true if the application has called SetText(). For wxWidgets internal
610 Returns @true if the UI element should be shown.
615 Returns the text that should be set for the UI element.
620 Returns the current interval between updates in milliseconds.
621 -1 disables updates, 0 updates as frequently as possible.
623 See SetUpdateInterval().
625 static long GetUpdateInterval();
628 Used internally to reset the last-updated time to the
629 current time. It is assumed that update events are
630 normally sent in idle time, so this is called at the end of
633 @sa CanUpdate(), SetUpdateInterval(),
636 static void ResetUpdateTime();
639 Specify how wxWidgets will send update events: to
640 all windows, or only to those which specify that they
641 will process the events.
643 @e mode may be one of the following values.
644 The default is wxUPDATE_UI_PROCESS_ALL.
646 static void SetMode(wxUpdateUIMode mode
);
649 Sets the text for this UI element.
651 void SetText(const wxString
& text
);
654 Sets the interval between updates in milliseconds.
655 Set to -1 to disable updates, or to 0 to update as frequently as possible.
658 Use this to reduce the overhead of UI update events if your application
659 has a lot of windows. If you set the value to -1 or greater than 0,
660 you may also need to call wxWindow::UpdateWindowUI
661 at appropriate points in your application, such as when a dialog
662 is about to be shown.
664 static void SetUpdateInterval(long updateInterval
);
667 Show or hide the UI element.
669 void Show(bool show
);
674 @class wxClipboardTextEvent
677 This class represents the events generated by a control (typically a
678 wxTextCtrl but other windows can generate these events as
679 well) when its content gets copied or cut to, or pasted from the clipboard.
680 There are three types of corresponding events wxEVT_COMMAND_TEXT_COPY,
681 wxEVT_COMMAND_TEXT_CUT and wxEVT_COMMAND_TEXT_PASTE.
683 If any of these events is processed (without being skipped) by an event
684 handler, the corresponding operation doesn't take place which allows to prevent
685 the text from being copied from or pasted to a control. It is also possible to
686 examine the clipboard contents in the PASTE event handler and transform it in
687 some way before inserting in a control -- for example, changing its case or
688 removing invalid characters.
690 Finally notice that a CUT event is always preceded by the COPY event which
691 makes it possible to only process the latter if it doesn't matter if the text
700 class wxClipboardTextEvent
: public wxCommandEvent
706 wxClipboardTextEvent(wxEventType commandType
= wxEVT_@NULL
,
715 This event class contains information about the events generated by the mouse:
716 they include mouse buttons press and release events and mouse move events.
718 All mouse events involving the buttons use @c wxMOUSE_BTN_LEFT for the
719 left mouse button, @c wxMOUSE_BTN_MIDDLE for the middle one and
720 @c wxMOUSE_BTN_RIGHT for the right one. And if the system supports more
721 buttons, the @c wxMOUSE_BTN_AUX1 and @c wxMOUSE_BTN_AUX2 events
722 can also be generated. Note that not all mice have even a middle button so a
723 portable application should avoid relying on the events from it (but the right
724 button click can be emulated using the left mouse button with the control key
725 under Mac platforms with a single button mouse).
727 For the @c wxEVT_ENTER_WINDOW and @c wxEVT_LEAVE_WINDOW events
728 purposes, the mouse is considered to be inside the window if it is in the
729 window client area and not inside one of its children. In other words, the
730 parent window receives @c wxEVT_LEAVE_WINDOW event not only when the
731 mouse leaves the window entirely but also when it enters one of its children.
733 @b NB: Note that under Windows CE mouse enter and leave events are not natively
735 by the system but are generated by wxWidgets itself. This has several
736 drawbacks: the LEAVE_WINDOW event might be received some time after the mouse
737 left the window and the state variables for it may have changed during this
740 @b NB: Note the difference between methods like
741 wxMouseEvent::LeftDown and
742 wxMouseEvent::LeftIsDown: the former returns @true
743 when the event corresponds to the left mouse button click while the latter
744 returns @true if the left mouse button is currently being pressed. For
745 example, when the user is dragging the mouse you can use
746 wxMouseEvent::LeftIsDown to test
747 whether the left mouse button is (still) depressed. Also, by convention, if
748 wxMouseEvent::LeftDown returns @true,
749 wxMouseEvent::LeftIsDown will also return @true in
750 wxWidgets whatever the underlying GUI behaviour is (which is
751 platform-dependent). The same applies, of course, to other mouse buttons as
760 class wxMouseEvent
: public wxEvent
764 Constructor. Valid event types are:
766 @b wxEVT_ENTER_WINDOW
767 @b wxEVT_LEAVE_WINDOW
773 @b wxEVT_MIDDLE_DCLICK
776 @b wxEVT_RIGHT_DCLICK
777 @b wxEVT_MOUSE_AUX1_DOWN
778 @b wxEVT_MOUSE_AUX1_UP
779 @b wxEVT_MOUSE_AUX1_DCLICK
780 @b wxEVT_MOUSE_AUX2_DOWN
781 @b wxEVT_MOUSE_AUX2_UP
782 @b wxEVT_MOUSE_AUX2_DCLICK
786 wxMouseEvent(WXTYPE mouseEventType
= 0);
789 Returns @true if the Alt key was down at the time of the event.
794 Returns @true if the event was a first extra button double click.
799 Returns @true if the first extra button mouse button changed to down.
804 Returns @true if the first extra button mouse button is currently down,
806 of the current event type.
811 Returns @true if the first extra button mouse button changed to up.
816 Returns @true if the event was a second extra button double click.
821 Returns @true if the second extra button mouse button changed to down.
826 Returns @true if the second extra button mouse button is currently down,
828 of the current event type.
833 Returns @true if the second extra button mouse button changed to up.
838 Returns @true if the identified mouse button is changing state. Valid
839 values of @e button are:
844 check if left button was pressed
846 @c wxMOUSE_BTN_MIDDLE
849 check if middle button was pressed
854 check if right button was pressed
859 check if the first extra button was pressed
864 check if the second extra button was pressed
869 check if any button was pressed
871 bool Button(int button
);
874 If the argument is omitted, this returns @true if the event was a mouse
875 double click event. Otherwise the argument specifies which double click event
876 was generated (see Button() for the possible
879 bool ButtonDClick(int but
= wxMOUSE_BTN_ANY
);
882 If the argument is omitted, this returns @true if the event was a mouse
883 button down event. Otherwise the argument specifies which button-down event
884 was generated (see Button() for the possible
887 bool ButtonDown(int but
= -1);
890 If the argument is omitted, this returns @true if the event was a mouse
891 button up event. Otherwise the argument specifies which button-up event
892 was generated (see Button() for the possible
895 bool ButtonUp(int but
= -1);
898 Same as MetaDown() under Mac, same as
899 ControlDown() elsewhere.
901 @sa wxKeyEvent::CmdDown
906 Returns @true if the control key was down at the time of the event.
911 Returns @true if this was a dragging event (motion while a button is depressed).
918 Returns @true if the mouse was entering the window.
925 Returns the mouse button which generated this event or @c wxMOUSE_BTN_NONE
926 if no button is involved (for mouse move, enter or leave event, for example).
927 Otherwise @c wxMOUSE_BTN_LEFT is returned for the left button down, up and
928 double click events, @c wxMOUSE_BTN_MIDDLE and @c wxMOUSE_BTN_RIGHT
929 for the same events for the middle and the right buttons respectively.
934 Returns the number of mouse clicks for this event: 1 for a simple click, 2
935 for a double-click, 3 for a triple-click and so on.
937 Currently this function is implemented only in wxMac and returns -1 for the
938 other platforms (you can still distinguish simple clicks from double-clicks as
939 they generate different kinds of events however).
941 This function is new since wxWidgets version 2.9.0
946 Returns the configured number of lines (or whatever) to be scrolled per
947 wheel action. Defaults to three.
949 int GetLinesPerAction();
952 Returns the logical mouse position in pixels (i.e. translated according to the
953 translation set for the DC, which usually indicates that the window has been
956 wxPoint
GetLogicalPosition(const wxDC
& dc
);
960 Sets *x and *y to the position at which the event occurred.
962 Returns the physical mouse position in pixels.
964 Note that if the mouse event has been artificially generated from a special
965 keyboard combination (e.g. under Windows when the "menu'' key is pressed), the
966 returned position is @c wxDefaultPosition.
968 wxPoint
GetPosition();
969 void GetPosition(wxCoord
* x
, wxCoord
* y
);
970 void GetPosition(long* x
, long* y
);
974 Get wheel delta, normally 120. This is the threshold for action to be
975 taken, and one such action (for example, scrolling one increment)
976 should occur for each delta.
981 Get wheel rotation, positive or negative indicates direction of
982 rotation. Current devices all send an event when rotation is at least
983 +/-WheelDelta, but finer resolution devices can be created in the future.
984 Because of this you shouldn't assume that one event is equal to 1 line, but you
985 should be able to either do partial line scrolling or wait until several
986 events accumulate before scrolling.
988 int GetWheelRotation();
991 Returns X coordinate of the physical mouse event position.
993 #define long GetX() /* implementation is private */
996 Returns Y coordinate of the physical mouse event position.
998 #define long GetY() /* implementation is private */
1001 Returns @true if the event was a mouse button event (not necessarily a button
1003 that may be tested using @e ButtonDown).
1008 Returns @true if the system has been setup to do page scrolling with
1009 the mouse wheel instead of line scrolling.
1011 bool IsPageScroll();
1014 Returns @true if the mouse was leaving the window.
1016 See also Entering().
1021 Returns @true if the event was a left double click.
1026 Returns @true if the left mouse button changed to down.
1031 Returns @true if the left mouse button is currently down, independent
1032 of the current event type.
1034 Please notice that it is not the same as
1035 LeftDown() which returns @true if the event was
1036 generated by the left mouse button being pressed. Rather, it simply describes
1037 the state of the left mouse button at the time when the event was generated
1038 (so while it will be @true for a left click event, it can also be @true for
1039 a right click if it happened while the left mouse button was pressed).
1041 This event is usually used in the mouse event handlers which process "move
1042 mouse" messages to determine whether the user is (still) dragging the mouse.
1047 Returns @true if the left mouse button changed to up.
1052 Returns @true if the Meta key was down at the time of the event.
1057 Returns @true if the event was a middle double click.
1059 bool MiddleDClick();
1062 Returns @true if the middle mouse button changed to down.
1067 Returns @true if the middle mouse button is currently down, independent
1068 of the current event type.
1070 bool MiddleIsDown();
1073 Returns @true if the middle mouse button changed to up.
1078 Returns @true if this was a motion event and no mouse buttons were pressed.
1079 If any mouse button is held pressed, then this method returns @false and
1080 Dragging() returns @true.
1085 Returns @true if the event was a right double click.
1090 Returns @true if the right mouse button changed to down.
1095 Returns @true if the right mouse button is currently down, independent
1096 of the current event type.
1101 Returns @true if the right mouse button changed to up.
1106 Returns @true if the shift key was down at the time of the event.
1113 @true if the Alt key is pressed down.
1120 @true if control key is pressed down.
1127 @true if the left mouse button is currently pressed down.
1132 int m_linesPerAction
1134 The configured number of lines (or whatever) to be scrolled per wheel
1142 @true if the Meta key is pressed down.
1149 @true if the middle mouse button is currently pressed down.
1156 @true if the right mouse button is currently pressed down.
1163 @true if shift is pressed down.
1170 The wheel delta, normally 120.
1177 The distance the mouse wheel is rotated.
1184 X-coordinate of the event.
1191 Y-coordinate of the event.
1197 @class wxDropFilesEvent
1200 This class is used for drop files events, that is, when files have been dropped
1201 onto the window. This functionality is currently only available under Windows.
1202 The window must have previously been enabled for dropping by calling
1203 wxWindow::DragAcceptFiles.
1205 Important note: this is a separate implementation to the more general
1206 drag and drop implementation documented here. It uses the
1207 older, Windows message-based approach of dropping files.
1213 @ref overview_eventhandlingoverview "Event handling overview"
1215 class wxDropFilesEvent
: public wxEvent
1221 wxDropFilesEvent(WXTYPE id
= 0, int noFiles
= 0,
1222 wxString
* files
= @NULL
);
1225 Returns an array of filenames.
1227 wxString
* GetFiles();
1230 Returns the number of files dropped.
1232 int GetNumberOfFiles();
1235 Returns the position at which the files were dropped.
1237 Returns an array of filenames.
1239 wxPoint
GetPosition();
1244 An array of filenames.
1251 The number of files dropped.
1258 The point at which the drop took place.
1264 @class wxCommandEvent
1267 This event class contains information about command events, which originate
1269 simple controls. More complex controls, such as wxTreeCtrl, have separate
1270 command event classes.
1275 class wxCommandEvent
: public wxEvent
1281 wxCommandEvent(WXTYPE commandEventType
= 0, int id
= 0);
1284 Deprecated, use IsChecked() instead.
1289 Returns client data pointer for a listbox or choice selection event
1290 (not valid for a deselection).
1292 void* GetClientData();
1295 Returns client object pointer for a listbox or choice selection event
1296 (not valid for a deselection).
1298 wxClientData
* GetClientObject();
1301 Returns extra information dependant on the event objects type.
1302 If the event comes from a listbox selection, it is a boolean
1303 determining whether the event was a selection (@true) or a
1304 deselection (@false). A listbox deselection only occurs for
1305 multiple-selection boxes, and in this case the index and string values
1306 are indeterminate and the listbox must be examined by the application.
1308 long GetExtraLong();
1311 Returns the integer identifier corresponding to a listbox, choice or
1312 radiobox selection (only if the event was a selection, not a
1313 deselection), or a boolean value representing the value of a checkbox.
1318 Returns item index for a listbox or choice selection event (not valid for
1324 Returns item string for a listbox or choice selection event (not valid for
1327 wxString
GetString();
1330 This method can be used with checkbox and menu events: for the checkboxes, the
1331 method returns @true for a selection event and @false for a
1332 deselection one. For the menu events, this method indicates if the menu item
1333 just has become checked or unchecked (and thus only makes sense for checkable
1336 Notice that this method can not be used with
1337 wxCheckListBox currently.
1342 For a listbox or similar event, returns @true if it is a selection, @false if it
1348 Sets the client data for this event.
1350 void SetClientData(void* clientData
);
1353 Sets the client object for this event. The client object is not owned by the
1355 object and the event object will not delete the client object in its destructor.
1356 The client object must be owned and deleted by another object (e.g. a control)
1357 that has longer life time than the event object.
1359 void SetClientObject(wxClientData
* clientObject
);
1362 Sets the @b m_extraLong member.
1364 void SetExtraLong(long extraLong
);
1367 Sets the @b m_commandInt member.
1369 void SetInt(int intCommand
);
1372 Sets the @b m_commandString member.
1374 void SetString(const wxString
& string
);
1379 @class wxActivateEvent
1382 An activate event is sent when a window or application is being activated
1389 @ref overview_eventhandlingoverview "Event handling overview", wxApp::IsActive
1391 class wxActivateEvent
: public wxEvent
1397 wxActivateEvent(WXTYPE eventType
= 0, bool active
= @
true,
1401 Returns @true if the application or window is being activated, @false otherwise.
1408 @class wxContextMenuEvent
1411 This class is used for context menu events, sent to give
1412 the application a chance to show a context (popup) menu.
1414 Note that if wxContextMenuEvent::GetPosition returns wxDefaultPosition, this
1415 means that the event originated
1416 from a keyboard context button event, and you should compute a suitable
1418 for example by calling wxGetMousePosition.
1420 When a keyboard context menu button is pressed on Windows, a right-click event
1421 with default position is sent first,
1422 and if this event is not processed, the context menu event is sent. So if you
1423 process mouse events and you find your context menu event handler
1424 is not being called, you could call wxEvent::Skip for mouse right-down events.
1430 @ref overview_wxcommandevent "Command events", @ref
1431 overview_eventhandlingoverview "Event handling overview"
1433 class wxContextMenuEvent
: public wxCommandEvent
1439 wxContextMenuEvent(WXTYPE id
= 0, int id
= 0,
1440 const wxPoint
& pos
=wxDefaultPosition
);
1443 Returns the position in screen coordinates at which the menu should be shown.
1444 Use wxWindow::ScreenToClient to
1445 convert to client coordinates. You can also omit a position from
1446 wxWindow::PopupMenu in order to use
1447 the current mouse pointer position.
1449 If the event originated from a keyboard event, the value returned from this
1450 function will be wxDefaultPosition.
1452 wxPoint
GetPosition();
1455 Sets the position at which the menu should be shown.
1457 void SetPosition(const wxPoint
& point
);
1465 An erase event is sent when a window's background needs to be repainted.
1467 On some platforms, such as GTK+, this event is simulated (simply generated just
1469 paint event) and may cause flicker. It is therefore recommended that
1470 you set the text background colour explicitly in order to prevent flicker.
1471 The default background colour under GTK+ is grey.
1473 To intercept this event, use the EVT_ERASE_BACKGROUND macro in an event table
1476 You must call wxEraseEvent::GetDC and use the returned device context if it is
1478 If it is @NULL, create your own temporary wxClientDC object.
1484 @ref overview_eventhandlingoverview "Event handling overview"
1486 class wxEraseEvent
: public wxEvent
1492 wxEraseEvent(int id
= 0, wxDC
* dc
= @NULL
);
1495 Returns the device context associated with the erase event to draw on.
1497 #define wxDC* GetDC() /* implementation is private */
1505 A focus event is sent when a window's focus changes. The window losing focus
1506 receives a "kill focus'' event while the window gaining it gets a "set
1509 Notice that the set focus event happens both when the user gives focus to the
1510 window (whether using the mouse or keyboard) and when it is done from the
1511 program itself using wxWindow::SetFocus.
1517 @ref overview_eventhandlingoverview "Event handling overview"
1519 class wxFocusEvent
: public wxEvent
1525 wxFocusEvent(WXTYPE eventType
= 0, int id
= 0);
1528 Returns the window associated with this event, that is the window which had the
1529 focus before for the @c wxEVT_SET_FOCUS event and the window which is
1530 going to receive focus for the @c wxEVT_KILL_FOCUS one.
1532 Warning: the window pointer may be @NULL!
1538 @class wxChildFocusEvent
1541 A child focus event is sent to a (parent-)window when one of its child windows
1543 so that the window could restore the focus back to its corresponding child
1544 if it loses it now and regains later.
1546 Notice that child window is the direct child of the window receiving event.
1547 Use wxWindow::FindFocus to retreive the window which is actually getting focus.
1553 @ref overview_eventhandlingoverview "Event handling overview"
1555 class wxChildFocusEvent
: public wxCommandEvent
1562 The direct child which is (or which contains the window which is) receiving the
1565 wxChildFocusEvent(wxWindow
* win
= @NULL
);
1568 Returns the direct child which receives the focus, or a (grand-)parent of the
1569 control receiving the focus.
1571 To get the actually focused control use wxWindow::FindFocus.
1577 @class wxMouseCaptureLostEvent
1580 An mouse capture lost event is sent to a window that obtained mouse capture,
1581 which was subsequently loss due to "external" event, for example when a dialog
1582 box is shown or if another application captures the mouse.
1584 If this happens, this event is sent to all windows that are on capture stack
1585 (i.e. called CaptureMouse, but didn't call ReleaseMouse yet). The event is
1586 not sent if the capture changes because of a call to CaptureMouse or
1589 This event is currently emitted under Windows only.
1595 wxMouseCaptureChangedEvent, @ref overview_eventhandlingoverview "Event handling
1596 overview", wxWindow::CaptureMouse, wxWindow::ReleaseMouse, wxWindow::GetCapture
1598 class wxMouseCaptureLostEvent
: public wxEvent
1604 wxMouseCaptureLostEvent(wxWindowID windowId
= 0);
1609 @class wxNotifyEvent
1612 This class is not used by the event handlers by itself, but is a base class
1613 for other event classes (such as wxNotebookEvent).
1615 It (or an object of a derived class) is sent when the controls state is being
1616 changed and allows the program to wxNotifyEvent::Veto this
1617 change if it wants to prevent it from happening.
1625 class wxNotifyEvent
: public wxCommandEvent
1629 Constructor (used internally by wxWidgets only).
1631 wxNotifyEvent(wxEventType eventType
= wxEVT_@NULL
, int id
= 0);
1634 This is the opposite of Veto(): it explicitly
1635 allows the event to be processed. For most events it is not necessary to call
1636 this method as the events are allowed anyhow but some are forbidden by default
1637 (this will be mentioned in the corresponding event description).
1642 Returns @true if the change is allowed (Veto()
1643 hasn't been called) or @false otherwise (if it was).
1648 Prevents the change announced by this event from happening.
1650 It is in general a good idea to notify the user about the reasons for vetoing
1651 the change because otherwise the applications behaviour (which just refuses to
1652 do what the user wants) might be quite surprising.
1662 A help event is sent when the user has requested context-sensitive help.
1663 This can either be caused by the application requesting
1664 context-sensitive help mode via wxContextHelp, or
1665 (on MS Windows) by the system generating a WM_HELP message when the user
1666 pressed F1 or clicked
1667 on the query button in a dialog caption.
1669 A help event is sent to the window that the user clicked on, and is propagated
1671 window hierarchy until the event is processed or there are no more event
1673 The application should call wxEvent::GetId to check the identity of the
1675 and then either show some suitable help or call wxEvent::Skip if the identifier
1677 Calling Skip is important because it allows wxWidgets to generate further
1678 events for ancestors
1679 of the clicked-on window. Otherwise it would be impossible to show help for
1681 since processing would stop after the first window found.
1687 wxContextHelp, wxDialog, @ref overview_eventhandlingoverview "Event handling
1690 class wxHelpEvent
: public wxCommandEvent
1696 wxHelpEvent(WXTYPE eventType
= 0, wxWindowID id
= 0,
1697 const wxPoint
& point
);
1700 Returns the origin of the help event which is one of the following values:
1706 Unrecognized event source.
1711 Event generated by @c F1 key press.
1713 @b Origin_HelpButton
1717 wxContextHelp or using the "?" title bur button under
1720 The application may handle events generated using the keyboard or mouse
1721 differently, e.g. by using wxGetMousePosition
1722 for the mouse events.
1726 wxHelpEvent::Origin
GetOrigin();
1729 Returns the left-click position of the mouse, in screen coordinates. This allows
1730 the application to position the help appropriately.
1732 const wxPoint
GetPosition();
1735 Set the help event origin, only used internally by wxWidgets normally.
1739 void SetOrigin(wxHelpEvent::Origin origin
);
1742 Sets the left-click position of the mouse, in screen coordinates.
1744 void SetPosition(const wxPoint
& pt
);
1749 @class wxScrollEvent
1752 A scroll event holds information about events sent from stand-alone
1753 scrollbars and sliders. Note that
1754 starting from wxWidgets 2.1, scrolled windows send the
1755 wxScrollWinEvent which does not derive from
1756 wxCommandEvent, but from wxEvent directly - don't confuse these two kinds of
1757 events and use the event table macros mentioned below only for the
1758 scrollbar-like controls.
1764 wxScrollBar, wxSlider, wxSpinButton, , wxScrollWinEvent, @ref
1765 overview_eventhandlingoverview "Event handling overview"
1767 class wxScrollEvent
: public wxCommandEvent
1773 wxScrollEvent(WXTYPE commandType
= 0, int id
= 0, int pos
= 0,
1774 int orientation
= 0);
1777 Returns wxHORIZONTAL or wxVERTICAL, depending on the orientation of the
1780 int GetOrientation();
1783 Returns the position of the scrollbar.
1793 This class is used for idle events, which are generated when the system becomes
1794 idle. Note that, unless you do something specifically, the idle events are not
1795 sent if the system remains idle once it has become it, e.g. only a single idle
1796 event will be generated until something else resulting in more normal events
1797 happens and only then is the next idle event sent again. If you need to ensure
1798 a continuous stream of idle events, you can either use
1799 wxIdleEvent::RequestMore method in your handler or call
1800 wxWakeUpIdle periodically (for example from timer
1801 event), but note that both of these approaches (and especially the first one)
1802 increase the system load and so should be avoided if possible.
1804 By default, idle events are sent to all windows (and also
1805 wxApp, as usual). If this is causing a significant
1806 overhead in your application, you can call wxIdleEvent::SetMode with
1807 the value wxIDLE_PROCESS_SPECIFIED, and set the wxWS_EX_PROCESS_IDLE extra
1808 window style for every window which should receive idle events.
1814 @ref overview_eventhandlingoverview "Event handling overview", wxUpdateUIEvent,
1815 wxWindow::OnInternalIdle
1817 class wxIdleEvent
: public wxEvent
1826 Returns @true if it is appropriate to send idle events to
1829 This function looks at the mode used (see wxIdleEvent::SetMode),
1830 and the wxWS_EX_PROCESS_IDLE style in @e window to determine whether idle
1831 events should be sent to
1832 this window now. By default this will always return @true because
1833 the update mode is initially wxIDLE_PROCESS_ALL. You can change the mode
1834 to only send idle events to windows with the wxWS_EX_PROCESS_IDLE extra window
1839 static bool CanSend(wxWindow
* window
);
1842 Static function returning a value specifying how wxWidgets
1843 will send idle events: to all windows, or only to those which specify that they
1844 will process the events.
1848 static wxIdleMode
GetMode();
1851 Returns @true if the OnIdle function processing this event requested more
1856 bool MoreRequested();
1859 Tells wxWidgets that more processing is required. This function can be called
1861 handler for a window or window event handler to indicate that wxApp::OnIdle
1863 forward the OnIdle event once more to the application windows. If no window
1865 during OnIdle, then the application will remain in a passive event loop (not
1866 calling OnIdle) until a
1867 new event is posted to the application by the windowing system.
1871 void RequestMore(bool needMore
= @
true);
1874 Static function for specifying how wxWidgets will send idle events: to
1875 all windows, or only to those which specify that they
1876 will process the events.
1878 @e mode can be one of the following values.
1879 The default is wxIDLE_PROCESS_ALL.
1881 static void SetMode(wxIdleMode mode
);
1886 @class wxInitDialogEvent
1889 A wxInitDialogEvent is sent as a dialog or panel is being initialised.
1890 Handlers for this event can transfer data to the window.
1891 The default handler calls wxWindow::TransferDataToWindow.
1897 @ref overview_eventhandlingoverview "Event handling overview"
1899 class wxInitDialogEvent
: public wxEvent
1905 wxInitDialogEvent(int id
= 0);
1910 @class wxWindowDestroyEvent
1913 This event is sent from the wxWindow destructor wxWindow::~wxWindow() when a
1914 window is destroyed.
1916 When a class derived from wxWindow is destroyed its destructor will have
1917 already run by the time this event is sent. Therefore this event will not
1918 usually be received at all.
1920 To receive this event wxEvtHandler::Connect
1921 must be used (using an event table macro will not work). Since it is
1922 received after the destructor has run, an object should not handle its
1923 own wxWindowDestroyEvent, but it can be used to get notification of the
1924 destruction of another window.
1930 @ref overview_eventhandlingoverview "Event handling overview",
1933 class wxWindowDestroyEvent
: public wxCommandEvent
1939 wxWindowDestroyEvent(wxWindow
* win
= @NULL
);
1944 @class wxNavigationKeyEvent
1947 This event class contains information about navigation events,
1948 generated by navigation keys such as tab and page down.
1950 This event is mainly used by wxWidgets implementations. A
1951 wxNavigationKeyEvent handler is automatically provided by wxWidgets
1952 when you make a class into a control container with the macro
1953 WX_DECLARE_CONTROL_CONTAINER.
1959 wxWindow::Navigate, wxWindow::NavigateIn
1961 class wxNavigationKeyEvent
1968 wxNavigationKeyEvent();
1969 wxNavigationKeyEvent(const wxNavigationKeyEvent
& event
);
1973 Returns the child that has the focus, or @NULL.
1975 wxWindow
* GetCurrentFocus();
1978 Returns @true if the navigation was in the forward direction.
1980 bool GetDirection();
1983 Returns @true if the navigation event was from a tab key. This is required
1984 for proper navigation over radio buttons.
1989 Returns @true if the navigation event represents a window change (for
1990 example, from Ctrl-Page Down
1993 bool IsWindowChange();
1996 Sets the current focus window member.
1998 void SetCurrentFocus(wxWindow
* currentFocus
);
2001 Sets the direction to forward if @e direction is @true, or backward if @c
2004 void SetDirection(bool direction
);
2009 void SetFlags(long flags
);
2012 Marks the navigation event as from a tab key.
2014 void SetFromTab(bool fromTab
);
2017 Marks the event as a window change event.
2019 void SetWindowChange(bool windowChange
);
2024 @class wxMouseCaptureChangedEvent
2027 An mouse capture changed event is sent to a window that loses its
2028 mouse capture. This is called even if wxWindow::ReleaseCapture
2029 was called by the application code. Handling this event allows
2030 an application to cater for unexpected capture releases which
2031 might otherwise confuse mouse handling code.
2033 This event is implemented under Windows only.
2039 wxMouseCaptureLostEvent, @ref overview_eventhandlingoverview "Event handling
2040 overview", wxWindow::CaptureMouse, wxWindow::ReleaseMouse, wxWindow::GetCapture
2042 class wxMouseCaptureChangedEvent
: public wxEvent
2048 wxMouseCaptureChangedEvent(wxWindowID windowId
= 0,
2049 wxWindow
* gainedCapture
= @NULL
);
2052 Returns the window that gained the capture, or @NULL if it was a non-wxWidgets
2055 wxWindow
* GetCapturedWindow();
2063 This event class contains information about window and session close events.
2065 The handler function for EVT_CLOSE is called when the user has tried to close a
2067 or dialog box using the window manager (X) or system menu (Windows). It can
2068 also be invoked by the application itself programmatically, for example by
2069 calling the wxWindow::Close function.
2071 You should check whether the application is forcing the deletion of the window
2072 using wxCloseEvent::CanVeto. If this is @false,
2073 you @e must destroy the window using wxWindow::Destroy.
2074 If the return value is @true, it is up to you whether you respond by destroying
2077 If you don't destroy the window, you should call wxCloseEvent::Veto to
2078 let the calling code know that you did not destroy the window. This allows the
2079 wxWindow::Close function
2080 to return @true or @false depending on whether the close instruction was
2087 wxWindow::Close, @ref overview_windowdeletionoverview "Window deletion overview"
2089 class wxCloseEvent
: public wxEvent
2095 wxCloseEvent(WXTYPE commandEventType
= 0, int id
= 0);
2098 Returns @true if you can veto a system shutdown or a window close event.
2099 Vetoing a window close event is not possible if the calling code wishes to
2100 force the application to exit, and so this function must be called to check
2106 Returns @true if the user is just logging off or @false if the system is
2107 shutting down. This method can only be called for end session and query end
2108 session events, it doesn't make sense for close window event.
2110 bool GetLoggingOff();
2113 Sets the 'can veto' flag.
2115 void SetCanVeto(bool canVeto
);
2118 Sets the 'force' flag.
2120 void SetForce(bool force
);
2123 Sets the 'logging off' flag.
2125 void SetLoggingOff(bool loggingOff
);
2128 Call this from your event handler to veto a system shutdown or to signal
2129 to the calling application that a window close did not happen.
2131 You can only veto a shutdown if CanVeto() returns
2134 void Veto(bool veto
= @
true);
2142 This class is used for a variety of menu-related events. Note that
2143 these do not include menu command events, which are
2144 handled using wxCommandEvent objects.
2146 The default handler for wxEVT_MENU_HIGHLIGHT displays help
2147 text in the first field of the status bar.
2153 @ref overview_wxcommandevent "Command events", @ref
2154 overview_eventhandlingoverview "Event handling overview"
2156 class wxMenuEvent
: public wxEvent
2162 wxMenuEvent(WXTYPE id
= 0, int id
= 0, wxMenu
* menu
= @NULL
);
2165 Returns the menu which is being opened or closed. This method should only be
2166 used with the @c OPEN and @c CLOSE events and even for them the
2167 returned pointer may be @NULL in some ports.
2172 Returns the menu identifier associated with the event. This method should be
2173 only used with the @c HIGHLIGHT events.
2178 Returns @true if the menu which is being opened or closed is a popup menu,
2179 @false if it is a normal one.
2181 This method should only be used with the @c OPEN and @c CLOSE events.
2188 @class wxEventBlocker
2191 This class is a special event handler which allows to discard
2192 any event (or a set of event types) directed to a specific window.
2198 // block all events directed to this window while
2199 // we do the 1000 FuncWhichSendsEvents() calls
2200 wxEventBlocker blocker(this);
2202 for ( int i = 0; i 1000; i++ )
2203 FuncWhichSendsEvents(i);
2205 } // ~wxEventBlocker called, old event handler is restored
2207 // the event generated by this call will be processed
2208 FuncWhichSendsEvents(0)
2215 @ref overview_eventhandlingoverview "Event handling overview", wxEvtHandler
2217 class wxEventBlocker
: public wxEvtHandler
2221 Constructs the blocker for the given window and for the given event type.
2222 If @e type is @c wxEVT_ANY, then all events for that window are
2223 blocked. You can call Block() after creation to
2224 add other event types to the list of events to block.
2226 Note that the @e win window @b must remain alive until the
2227 wxEventBlocker object destruction.
2229 wxEventBlocker(wxWindow
* win
, wxEventType type
= wxEVT_ANY
);
2232 Destructor. The blocker will remove itself from the chain of event handlers for
2233 the window provided in the constructor, thus restoring normal processing of
2239 Adds to the list of event types which should be blocked the given @e eventType.
2241 void Block(wxEventType eventType
);
2249 A class that can handle events from the windowing system.
2250 wxWindow (and therefore all window classes) are derived from
2253 When events are received, wxEvtHandler invokes the method listed in the
2254 event table using itself as the object. When using multiple inheritance
2255 it is imperative that the wxEvtHandler(-derived) class be the first
2256 class inherited such that the "this" pointer for the overall object
2257 will be identical to the "this" pointer for the wxEvtHandler portion.
2263 @ref overview_eventhandlingoverview "Event handling overview"
2265 class wxEvtHandler
: public wxObject
2274 Destructor. If the handler is part of a chain, the destructor will
2275 unlink itself and restore the previous and next handlers so that they point to
2281 This function posts an event to be processed later.
2284 Event to add to process queue.
2286 @remarks The difference between sending an event (using the ProcessEvent
2287 method) and posting it is that in the first case the
2288 event is processed before the function returns, while
2289 in the second case, the function returns immediately
2290 and the event will be processed sometime later
2291 (usually during the next event loop iteration).
2293 virtual void AddPendingEvent(const wxEvent
& event
);
2297 Connects the given function dynamically with the event handler, id and event
2299 is an alternative to the use of static event tables. See the 'event' or the old
2300 'dynamic' sample for usage.
2303 The identifier (or first of the identifier range) to be
2304 associated with the event handler function. For the version not taking this
2305 argument, it defaults to wxID_ANY.
2308 The second part of the identifier range to be associated with the event handler
2312 The event type to be associated with this event handler.
2315 The event handler function. Note that this function should
2316 be explicitly converted to the correct type which can be done using a macro
2317 called wxFooEventHandler for the handler for any wxFooEvent.
2320 Data to be associated with the event table entry.
2323 Object whose member function should be called. If this is @NULL,
2326 void Connect(int id
, int lastId
, wxEventType eventType
,
2327 wxObjectEventFunction function
,
2328 wxObject
* userData
= @NULL
,
2329 wxEvtHandler
* eventSink
= @NULL
);
2330 void Connect(int id
, wxEventType eventType
,
2331 wxObjectEventFunction function
,
2332 wxObject
* userData
= @NULL
,
2333 wxEvtHandler
* eventSink
= @NULL
);
2334 void Connect(wxEventType eventType
,
2335 wxObjectEventFunction function
,
2336 wxObject
* userData
= @NULL
,
2337 wxEvtHandler
* eventSink
= @NULL
);
2342 Disconnects the given function dynamically from the event handler, using the
2344 parameters as search criteria and returning @true if a matching function has been
2345 found and removed. This method can only disconnect functions which have been
2347 using the Connect() method. There is no way
2348 to disconnect functions connected using the (static) event tables.
2351 The identifier (or first of the identifier range) associated with the event
2355 The second part of the identifier range associated with the event handler
2359 The event type associated with this event handler.
2362 The event handler function.
2365 Data associated with the event table entry.
2368 Object whose member function should be called.
2370 bool Disconnect(wxEventType eventType
= wxEVT_@NULL
,
2371 wxObjectEventFunction function
= @NULL
,
2372 wxObject
* userData
= @NULL
,
2373 wxEvtHandler
* eventSink
= @NULL
);
2374 bool Disconnect(int id
= wxID_ANY
,
2375 wxEventType eventType
= wxEVT_@NULL
,
2376 wxObjectEventFunction function
= @NULL
,
2377 wxObject
* userData
= @NULL
,
2378 wxEvtHandler
* eventSink
= @NULL
);
2379 bool Disconnect(int id
, int lastId
= wxID_ANY
,
2380 wxEventType eventType
= wxEVT_@NULL
,
2381 wxObjectEventFunction function
= @NULL
,
2382 wxObject
* userData
= @NULL
,
2383 wxEvtHandler
* eventSink
= @NULL
);
2387 Gets user-supplied client data.
2389 @remarks Normally, any extra data the programmer wishes to associate with
2390 the object should be made available by deriving a new
2391 class with new data members.
2395 void* GetClientData();
2398 Get a pointer to the user-supplied client data object.
2400 @sa SetClientObject(), wxClientData
2402 wxClientData
* GetClientObject();
2405 Returns @true if the event handler is enabled, @false otherwise.
2407 @sa SetEvtHandlerEnabled()
2409 bool GetEvtHandlerEnabled();
2412 Gets the pointer to the next handler in the chain.
2414 @sa SetNextHandler(), GetPreviousHandler(),
2415 SetPreviousHandler(), wxWindow::PushEventHandler,
2416 wxWindow::PopEventHandler
2418 wxEvtHandler
* GetNextHandler();
2421 Gets the pointer to the previous handler in the chain.
2423 @sa SetPreviousHandler(), GetNextHandler(),
2424 SetNextHandler(), wxWindow::PushEventHandler,
2425 wxWindow::PopEventHandler
2427 wxEvtHandler
* GetPreviousHandler();
2430 Processes an event, searching event tables and calling zero or more suitable
2431 event handler function(s).
2436 @returns @true if a suitable event handler function was found and
2437 executed, and the function did not call wxEvent::Skip.
2439 @remarks Normally, your application would not call this function: it is
2440 called in the wxWidgets implementation to dispatch
2441 incoming user interface events to the framework (and
2444 @sa SearchEventTable()
2446 virtual bool ProcessEvent(wxEvent
& event
);
2449 Processes an event by calling ProcessEvent()
2450 and handles any exceptions that occur in the process. If an exception is
2451 thrown in event handler, wxApp::OnExceptionInMainLoop
2457 @returns @true if the event was processed, @false if no handler was found
2458 or an exception was thrown.
2460 @sa wxWindow::HandleWindowEvent
2462 bool SafelyProcessEvent(wxEvent
& event
);
2465 Searches the event table, executing an event handler function if an appropriate
2470 Event table to be searched.
2473 Event to be matched against an event table entry.
2475 @returns @true if a suitable event handler function was found and
2476 executed, and the function did not call wxEvent::Skip.
2478 @remarks This function looks through the object's event table and tries
2479 to find an entry that will match the event.
2483 virtual bool SearchEventTable(wxEventTable
& table
,
2487 Sets user-supplied client data.
2490 Data to be associated with the event handler.
2492 @remarks Normally, any extra data the programmer wishes to associate with
2493 the object should be made available by deriving a
2494 new class with new data members. You must not call
2495 this method and SetClientObject on the same class -
2500 void SetClientData(void* data
);
2503 Set the client data object. Any previous object will be deleted.
2505 @sa GetClientObject(), wxClientData
2507 void SetClientObject(wxClientData
* data
);
2510 Enables or disables the event handler.
2513 @true if the event handler is to be enabled, @false if it is to be disabled.
2515 @remarks You can use this function to avoid having to remove the event
2516 handler from the chain, for example when implementing
2517 a dialog editor and changing from edit to test mode.
2519 @sa GetEvtHandlerEnabled()
2521 void SetEvtHandlerEnabled(bool enabled
);
2524 Sets the pointer to the next handler.
2527 Event handler to be set as the next handler.
2529 @sa GetNextHandler(), SetPreviousHandler(),
2530 GetPreviousHandler(), wxWindow::PushEventHandler,
2531 wxWindow::PopEventHandler
2533 void SetNextHandler(wxEvtHandler
* handler
);
2536 Sets the pointer to the previous handler.
2539 Event handler to be set as the previous handler.
2541 void SetPreviousHandler(wxEvtHandler
* handler
);
2546 @class wxIconizeEvent
2549 An event being sent when the frame is iconized (minimized) or restored.
2551 Currently only wxMSW and wxGTK generate such events.
2557 @ref overview_eventhandlingoverview "Event handling overview",
2558 wxTopLevelWindow::Iconize, wxTopLevelWindow::IsIconized
2560 class wxIconizeEvent
: public wxEvent
2566 wxIconizeEvent(int id
= 0, bool iconized
= @
true);
2569 Returns @true if the frame has been iconized, @false if it has been
2580 A move event holds information about move change events.
2586 wxPoint, @ref overview_eventhandlingoverview "Event handling overview"
2588 class wxMoveEvent
: public wxEvent
2594 wxMoveEvent(const wxPoint
& pt
, int id
= 0);
2597 Returns the position of the window generating the move change event.
2599 wxPoint
GetPosition();
2607 An event is a structure holding information about an event passed to a
2608 callback or member function. @b wxEvent used to be a multipurpose
2609 event object, and is an abstract base class for other event classes (see below).
2611 For more information about events, see the @ref overview_eventhandlingoverview
2612 "Event handling overview".
2614 @b wxPerl note: In wxPerl custom event classes should be derived from
2615 @c Wx::PlEvent and @c Wx::PlCommandEvent.
2621 wxCommandEvent, wxMouseEvent
2623 class wxEvent
: public wxObject
2627 Constructor. Should not need to be used directly by an application.
2629 wxEvent(int id
= 0, wxEventType eventType
= wxEVT_@NULL
);
2632 Returns a copy of the event.
2634 Any event that is posted to the wxWidgets event system for later action (via
2635 wxEvtHandler::AddPendingEvent or
2636 wxPostEvent) must implement this method. All wxWidgets
2637 events fully implement this method, but any derived events implemented by the
2638 user should also implement this method just in case they (or some event
2639 derived from them) are ever posted.
2641 All wxWidgets events implement a copy constructor, so the easiest way of
2642 implementing the Clone function is to implement a copy constructor for
2643 a new event (call it MyEvent) and then define the Clone function like this:
2645 virtual wxEvent
* Clone();
2648 Returns the object (usually a window) associated with the
2651 wxObject
* GetEventObject();
2654 Returns the identifier of the given event type,
2655 such as @c wxEVT_COMMAND_BUTTON_CLICKED.
2657 wxEventType
GetEventType();
2660 Returns the identifier associated with this event, such as a button command id.
2665 Returns @true if the event handler should be skipped, @false otherwise.
2670 Gets the timestamp for the event. The timestamp is the time in milliseconds
2671 since some fixed moment (not necessarily the standard Unix Epoch, so
2672 only differences between the timestamps and not their absolute values usually
2675 long GetTimestamp();
2678 Returns @true if the event is or is derived from
2679 wxCommandEvent else it returns @false.
2680 Note: Exists only for optimization purposes.
2682 bool IsCommandEvent();
2685 Sets the propagation level to the given value (for example returned from an
2686 earlier call to wxEvent::StopPropagation).
2688 void ResumePropagation(int propagationLevel
);
2691 Sets the originating object.
2693 void SetEventObject(wxObject
* object
);
2696 Sets the event type.
2698 void SetEventType(wxEventType type
);
2701 Sets the identifier associated with this event, such as a button command id.
2706 Sets the timestamp for the event.
2708 void SetTimestamp(long timeStamp
);
2711 Test if this event should be propagated or not, i.e. if the propagation level
2712 is currently greater than 0.
2714 bool ShouldPropagate();
2717 This method can be used inside an event handler to control whether further
2718 event handlers bound to this event will be called after the current one
2719 returns. Without Skip() (or equivalently if Skip(@false) is used),
2720 the event will not be processed any more. If Skip(@true) is called, the event
2721 processing system continues searching for a further handler function for this
2722 event, even though it has been processed already in the current handler.
2724 In general, it is recommended to skip all non-command events to allow the
2725 default handling to take place. The command events are, however, normally not
2726 skipped as usually a single command such as a button click or menu item
2727 selection must only be processed by one handler.
2729 void Skip(bool skip
= @
true);
2732 Stop the event from propagating to its parent window.
2734 Returns the old propagation level value which may be later passed to
2735 ResumePropagation() to allow propagating the
2738 int StopPropagation();
2741 int m_propagationLevel
2743 Indicates how many levels the event can propagate. This member is protected and
2744 should typically only be set in the constructors of the derived classes. It
2745 may be temporarily changed by StopPropagation()
2746 and ResumePropagation() and tested with
2749 The initial value is set to either @c wxEVENT_PROPAGATE_NONE (by
2750 default) meaning that the event shouldn't be propagated at all or to
2751 @c wxEVENT_PROPAGATE_MAX (for command events) meaning that it should be
2752 propagated as much as necessary.
2754 Any positive number means that the event should be propagated but no more than
2755 the given number of times. E.g. the propagation level may be set to 1 to
2756 propagate the event to its parent only, but not to its grandparent.
2765 A size event holds information about size change events.
2767 The EVT_SIZE handler function will be called when the window has been resized.
2769 You may wish to use this for frames to resize their child windows as
2772 Note that the size passed is of
2773 the whole window: call wxWindow::GetClientSize for the area which may be
2774 used by the application.
2776 When a window is resized, usually only a small part of the window is damaged
2778 may only need to repaint that area. However, if your drawing depends on the
2780 you may need to clear the DC explicitly and repaint the whole window. In which
2782 may need to call wxWindow::Refresh to invalidate the entire window.
2788 wxSize, @ref overview_eventhandlingoverview "Event handling overview"
2790 class wxSizeEvent
: public wxEvent
2796 wxSizeEvent(const wxSize
& sz
, int id
= 0);
2799 Returns the entire size of the window generating the size change event.
2806 @class wxSetCursorEvent
2809 A SetCursorEvent is generated when the mouse cursor is about to be set as a
2810 result of mouse motion. This event gives the application the chance to perform
2811 specific mouse cursor processing based on the current position of the mouse
2812 within the window. Use wxSetCursorEvent::SetCursor to
2813 specify the cursor you want to be displayed.
2819 ::wxSetCursor, wxWindow::wxSetCursor
2821 class wxSetCursorEvent
: public wxEvent
2825 Constructor, used by the library itself internally to initialize the event
2828 wxSetCursorEvent(wxCoord x
= 0, wxCoord y
= 0);
2831 Returns a reference to the cursor specified by this event.
2833 wxCursor
GetCursor();
2836 Returns the X coordinate of the mouse in client coordinates.
2838 #define wxCoord GetX() /* implementation is private */
2841 Returns the Y coordinate of the mouse in client coordinates.
2843 #define wxCoord GetY() /* implementation is private */
2846 Returns @true if the cursor specified by this event is a valid cursor.
2848 @remarks You cannot specify wxNullCursor with this event, as it is not
2849 considered a valid cursor.
2854 Sets the cursor associated with this event.
2856 void SetCursor(const wxCursor
& cursor
);