X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/eb23d11e000642b1e2a455df072db4e3783077aa..7447d53c35249d42128d6243c90998f03882859a:/docs/doxygen/overviews/eventhandling.h?ds=sidebyside diff --git a/docs/doxygen/overviews/eventhandling.h b/docs/doxygen/overviews/eventhandling.h index 0c78592351..10a1c6543a 100644 --- a/docs/doxygen/overviews/eventhandling.h +++ b/docs/doxygen/overviews/eventhandling.h @@ -3,7 +3,7 @@ // Purpose: topic overview // Author: wxWidgets team // RCS-ID: $Id$ -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// /** @@ -110,7 +110,7 @@ return information is passed via the argument, which is why it is non-const). You also need to insert a macro @code -DECLARE_EVENT_TABLE() +wxDECLARE_EVENT_TABLE() @endcode somewhere in the class declaration. It doesn't matter where it appears but @@ -141,7 +141,7 @@ private: // obligation to do that; this one is an event handler too: void DoTest(wxCommandEvent& event); - DECLARE_EVENT_TABLE() + wxDECLARE_EVENT_TABLE() }; @endcode @@ -150,12 +150,12 @@ placed in an implementation file. The event table tells wxWidgets how to map events to member functions and in our example it could look like this: @code -BEGIN_EVENT_TABLE(MyFrame, wxFrame) +wxBEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(wxID_EXIT, MyFrame::OnExit) EVT_MENU(DO_TEST, MyFrame::DoTest) EVT_SIZE(MyFrame::OnSize) EVT_BUTTON(BUTTON1, MyFrame::OnButton1) -END_EVENT_TABLE() +wxEND_EVENT_TABLE() @endcode Notice that you must mention a method you want to use for the event handling in @@ -225,7 +225,7 @@ events. The possibilities of handling events in this way are rather different. Let us start by looking at the syntax: the first obvious difference is that you -need not use DECLARE_EVENT_TABLE() nor BEGIN_EVENT_TABLE() and the +need not use wxDECLARE_EVENT_TABLE() nor wxBEGIN_EVENT_TABLE() and the associated macros. Instead, in any place in your code, but usually in the code of the class defining the handler itself (and definitely not in the global scope as with the event tables), call its Bind<>() method like this: @@ -537,7 +537,7 @@ and their parent-child relation are well understood by the programmer while it may be difficult, if not impossible, to track down all the dialogs that may be popped up in a complex program (remember that some are created automatically by wxWidgets). If you need to specify a different behaviour for -some reason, you can use wxWindow::SetExtraStyle(wxWS_EX_BLOCK_EVENTS) +some reason, you can use wxWindow::SetExtraStyle(wxWS_EX_BLOCK_EVENTS) explicitly to prevent the events from being propagated beyond the given window or unset this flag for the dialogs that have it on by default. @@ -594,6 +594,16 @@ Both strategies are described in details below. See also the @ref page_samples_event for a complete example of code defining and working with the custom event types. +Finally, you will need to generate and post your custom events. +Generation is as simple as instancing your custom event class and initializing +its internal fields. +For posting events to a certain event handler there are two possibilities: +using wxEvtHandler::AddPendingEvent or using wxEvtHandler::QueueEvent. +Basically you will need to use the latter when doing inter-thread communication; +when you use only the main thread you can also safely use the former. +Last, note that there are also two simple global wrapper functions associated +to the two wxEvtHandler mentioned functions: wxPostEvent() and wxQueueEvent(). + @subsection overview_events_custom_existing Using Existing Event Classes @@ -611,16 +621,16 @@ wxDECLARE_EVENT(MY_EVENT, wxCommandEvent); wxDEFINE_EVENT(MY_EVENT, wxCommandEvent); // example of code handling the event with event tables -BEGIN_EVENT_TABLE(MyFrame, wxFrame) +wxBEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU (wxID_EXIT, MyFrame::OnExit) ... EVT_COMMAND (ID_MY_WINDOW, MY_EVENT, MyFrame::OnMyEvent) -END_EVENT_TABLE() +wxEND_EVENT_TABLE() void MyFrame::OnMyEvent(wxCommandEvent& event) { // do something - wxString text = event.GetText(); + wxString text = event.GetString(); } // example of code handling the event with Bind<>(): @@ -636,7 +646,7 @@ void MyWindow::SendEvent() event.SetEventObject(this); // Give it some contents - event.SetText("Hello"); + event.SetString("Hello"); // Do send it ProcessWindowEvent(event); @@ -701,9 +711,9 @@ typedef void (wxEvtHandler::*MyPlotEventFunction)(MyPlotEvent&); // example of code handling the event (you will use one of these methods, not // both, of course): -BEGIN_EVENT_TABLE(MyFrame, wxFrame) +wxBEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_PLOT(ID_MY_WINDOW, MyFrame::OnPlot) -END_EVENT_TABLE() +wxEND_EVENT_TABLE() MyFrame::MyFrame() {