+ @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
+
+