⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tevent.tex

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 TEX
📖 第 1 页 / 共 2 页
字号:
long as you don't have several within the same dialog.If you pass {\tt wxID\_ANY} to a window constructor, an identifier will begenerated for you automatically by wxWidgets. This is useful when you don'tcare about the exact identifier either because you're not going to process theevents from the control being created at all or because you process the eventsfrom all controls in one place (in which case you should specify {\tt wxID\_ANY} in the event table or \helpref{wxEvtHandler::Connect}{wxevthandlerconnect} callas well. The automatically generated identifiers are always negative and sowill never conflict with the user-specified identifiers which must be alwayspositive.The following standard identifiers are supplied. You can use wxID\_HIGHEST todetermine the number above which it is safe to define your own identifiers. Or,you can use identifiers below wxID\_LOWEST.\begin{verbatim}#define wxID_ANY                -1#define wxID_LOWEST             4999#define wxID_OPEN               5000#define wxID_CLOSE              5001#define wxID_NEW                5002#define wxID_SAVE               5003#define wxID_SAVEAS             5004#define wxID_REVERT             5005#define wxID_EXIT               5006#define wxID_UNDO               5007#define wxID_REDO               5008#define wxID_HELP               5009#define wxID_PRINT              5010#define wxID_PRINT_SETUP        5011#define wxID_PREVIEW            5012#define wxID_ABOUT              5013#define wxID_HELP_CONTENTS      5014#define wxID_HELP_COMMANDS      5015#define wxID_HELP_PROCEDURES    5016#define wxID_HELP_CONTEXT       5017#define wxID_CUT                5030#define wxID_COPY               5031#define wxID_PASTE              5032#define wxID_CLEAR              5033#define wxID_FIND               5034#define wxID_DUPLICATE          5035#define wxID_SELECTALL          5036#define wxID_DELETE             5037#define wxID_REPLACE            5038#define wxID_REPLACE_ALL        5039#define wxID_PROPERTIES         5040#define wxID_VIEW_DETAILS       5041#define wxID_VIEW_LARGEICONS    5042#define wxID_VIEW_SMALLICONS    5043#define wxID_VIEW_LIST          5044#define wxID_VIEW_SORTDATE      5045#define wxID_VIEW_SORTNAME      5046#define wxID_VIEW_SORTSIZE      5047#define wxID_VIEW_SORTTYPE      5048#define wxID_FILE1              5050#define wxID_FILE2              5051#define wxID_FILE3              5052#define wxID_FILE4              5053#define wxID_FILE5              5054#define wxID_FILE6              5055#define wxID_FILE7              5056#define wxID_FILE8              5057#define wxID_FILE9              5058#define wxID_OK                 5100#define wxID_CANCEL             5101#define wxID_APPLY              5102#define wxID_YES                5103#define wxID_NO                 5104#define wxID_STATIC             5105#define wxID_HIGHEST            5999\end{verbatim}\subsection{Event macros summary}\label{eventmacros}\wxheading{Macros listed by event class}The documentation for specific event macros is organised by event class. Please referto these sections for details.\twocolwidtha{8cm}%\begin{twocollist}\itemsep=0pt\twocolitem{\helpref{wxActivateEvent}{wxactivateevent}}{The EVT\_ACTIVATE and EVT\_ACTIVATE\_APP macros interceptactivation and deactivation events.}\twocolitem{\helpref{wxCommandEvent}{wxcommandevent}}{A range of commonly-used control events.}\twocolitem{\helpref{wxCloseEvent}{wxcloseevent}}{The EVT\_CLOSE macro handles window closurecalled via \helpref{wxWindow::Close}{wxwindowclose}.}\twocolitem{\helpref{wxDropFilesEvent}{wxdropfilesevent}}{The EVT\_DROP\_FILES macros handlesfile drop events.}\twocolitem{\helpref{wxEraseEvent}{wxeraseevent}}{The EVT\_ERASE\_BACKGROUND macro is used to handle window erase requests.}\twocolitem{\helpref{wxFocusEvent}{wxfocusevent}}{The EVT\_SET\_FOCUS and EVT\_KILL\_FOCUS macros are used to handle keyboard focus events.}\twocolitem{\helpref{wxKeyEvent}{wxkeyevent}}{EVT\_CHAR, EVT\_KEY\_DOWN andEVT\_KEY\_UP macros handle keyboard input for any window.}\twocolitem{\helpref{wxIdleEvent}{wxidleevent}}{The EVT\_IDLE macro handle application idle events(to process background tasks, for example).}\twocolitem{\helpref{wxInitDialogEvent}{wxinitdialogevent}}{The EVT\_INIT\_DIALOG macro is usedto handle dialog initialisation.}\twocolitem{\helpref{wxListEvent}{wxlistevent}}{These macros handle \helpref{wxListCtrl}{wxlistctrl} events.}\twocolitem{\helpref{wxMenuEvent}{wxmenuevent}}{These macros handle special menu events (not menu commands).}\twocolitem{\helpref{wxMouseEvent}{wxmouseevent}}{Mouse event macros can handle either individualmouse events or all mouse events.}\twocolitem{\helpref{wxMoveEvent}{wxmoveevent}}{The EVT\_MOVE macro is used to handle a window move.}\twocolitem{\helpref{wxPaintEvent}{wxpaintevent}}{The EVT\_PAINT macro is used to handle window paint requests.}\twocolitem{\helpref{wxScrollEvent}{wxscrollevent}}{These macros are used to handle scroll events from \helpref{wxScrollBar}{wxscrollbar}, \helpref{wxSlider}{wxslider},and \helpref{wxSpinButton}{wxspinbutton}.}\twocolitem{\helpref{wxSetCursorEvent}{wxsetcursorevent}}{The EVT\_SET\_CURSOR macro is used for special cursor processing.}\twocolitem{\helpref{wxSizeEvent}{wxsizeevent}}{The EVT\_SIZE macro is used to handle a window resize.}\twocolitem{\helpref{wxSplitterEvent}{wxsplitterevent}}{The EVT\_SPLITTER\_SASH\_POS\_CHANGED, EVT\_SPLITTER\_UNSPLITand EVT\_SPLITTER\_DCLICK macros are used to handle the various splitter window events.}\twocolitem{\helpref{wxSysColourChangedEvent}{wxsyscolourchangedevent}}{The EVT\_SYS\_COLOUR\_CHANGED macro is used to handleevents informing the application that the user has changed the system colours (Windows only).}\twocolitem{\helpref{wxTreeEvent}{wxtreeevent}}{These macros handle \helpref{wxTreeCtrl}{wxtreectrl} events.}\twocolitem{\helpref{wxUpdateUIEvent}{wxupdateuievent}}{The EVT\_UPDATE\_UI macro is used to handle user interfaceupdate pseudo-events, which are generated to give the application the chance to update the visual state of menus,toolbars and controls.}\end{twocollist}\subsection{Custom event summary}\label{customevents}\wxheading{General approach}Since version 2.2.x of wxWidgets, each event type is identified by ID whichis given to the event type {\it at runtime} which makes it possible to addnew event types to the library or application without risking ID clashes(two different event types mistakingly getting the same event ID). Thisevent type ID is stored in a struct of type {\bf const wxEventType}.In order to define a new event type, there are principally two choices.One is to define a entirely new event class (typically deriving from\helpref{wxEvent}{wxevent} or \helpref{wxCommandEvent}{wxcommandevent}. The other is to use the existing event classes and give them an new eventtype. You'll have to define and declare a new event type using either way,and this is done using the following macros:\begin{verbatim}// in the header of the source fileBEGIN_DECLARE_EVENT_TYPES()DECLARE_EVENT_TYPE(name, value)END_DECLARE_EVENT_TYPES()// in the implementationDEFINE_EVENT_TYPE(name)\end{verbatim}You can ignore the {\it value} parameter of the DECLARE\_EVENT\_TYPE macrosince it used only for backwards compatibility with wxWidgets 2.0.x basedapplications where you have to give the event type ID an explicit value.See also the \helpref{event sample}{sampleevent} for an example of codedefining and working with the custom event types.\wxheading{Using existing event classes}If you just want to use a \helpref{wxCommandEvent}{wxcommandevent} witha new event type, you can then use one of the generic event table macroslisted below, without having to define a new macro yourself. This alsohas the advantage that you won't have to define a new \helpref{wxEvent::Clone()}{wxeventclone}method for posting events between threads etc. This could look like thisin your code:{\small%\begin{verbatim}DECLARE_EVENT_TYPE(wxEVT_MY_EVENT, -1)DEFINE_EVENT_TYPE(wxEVT_MY_EVENT)// user code intercepting the eventBEGIN_EVENT_TABLE(MyFrame, wxFrame)  EVT_MENU    (wxID_EXIT, MyFrame::OnExit)  // ....  EVT_COMMAND  (ID_MY_WINDOW, wxEVT_MY_EVENT, MyFrame::OnMyEvent)END_EVENT_TABLE()void MyFrame::OnMyEvent( wxCommandEvent &event ){    // do something    wxString text = event.GetText();}// user code sending the eventvoid MyWindow::SendEvent(){    wxCommandEvent event( wxEVT_MY_EVENT, GetId() );    event.SetEventObject( this );    // Give it some contents    event.SetText( wxT("Hallo") );    // Send it    GetEventHandler()->ProcessEvent( event );}\end{verbatim}}%\wxheading{Generic event table macros}\twocolwidtha{8cm}%\begin{twocollist}\itemsep=0pt\twocolitem{\windowstyle{EVT\_CUSTOM(event, id, func)}}{Allows you to add a custom event tableentry by specifying the event identifier (such as wxEVT\_SIZE), the window identifier,and a member function to call.}\twocolitem{\windowstyle{EVT\_CUSTOM\_RANGE(event, id1, id2, func)}}{The same as EVT\_CUSTOM,but responds to a range of window identifiers.}\twocolitem{\windowstyle{EVT\_COMMAND(id, event, func)}}{The same as EVT\_CUSTOM, butexpects a member function with a wxCommandEvent argument.}\twocolitem{\windowstyle{EVT\_COMMAND\_RANGE(id1, id2, event, func)}}{The same as EVT\_CUSTOM\_RANGE, butexpects a member function with a wxCommandEvent argument.}\twocolitem{\windowstyle{EVT\_NOTIFY(event, id, func)}}{The same as EVT\_CUSTOM, butexpects a member function with a wxNotifyEvent argument.}\twocolitem{\windowstyle{EVT\_NOTIFY\_RANGE(event, id1, id2, func)}}{The same as EVT\_CUSTOM\_RANGE, butexpects a member function with a wxNotifyEvent argument.}\end{twocollist}\wxheading{Defining your own event class}Under certain circumstances, it will be required to define your own eventclass e.g. for sending more complex data from one place to another. Apartfrom defining your event class, you will also need to define your ownevent table macro (which is quite long). Watch out to put in enoughcasts to the inherited event function. Here is an example, taken mostlyfrom the {\it wxPlot} library, which is in the {\it contrib} section ofthe wxWidgets sources.{\small%\begin{verbatim}// code defining eventclass wxPlotEvent: public wxNotifyEvent{public:    wxPlotEvent( wxEventType commandType = wxEVT_NULL, int id = 0 );    // accessors    wxPlotCurve *GetCurve()        { return m_curve; }    // required for sending with wxPostEvent()    wxEvent* Clone();private:    wxPlotCurve   *m_curve;};DECLARE_EVENT_MACRO( wxEVT_PLOT_ACTION, -1 )typedef void (wxEvtHandler::*wxPlotEventFunction)(wxPlotEvent&);#define EVT_PLOT(id, fn) \    DECLARE_EVENT_TABLE_ENTRY( wxEVT_PLOT_ACTION, id, -1, \    (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) \    wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),// code implementing the event type and the event classDEFINE_EVENT_TYPE( wxEVT_PLOT_ACTION )wxPlotEvent::wxPlotEvent( ...// user code intercepting the eventBEGIN_EVENT_TABLE(MyFrame, wxFrame)  EVT_PLOT  (ID_MY_WINDOW,  MyFrame::OnPlot)END_EVENT_TABLE()void MyFrame::OnPlot( wxPlotEvent &event ){    wxPlotCurve *curve = event.GetCurve();}// user code sending the eventvoid MyWindow::SendEvent(){    wxPlotEvent event( wxEVT_PLOT_ACTION, GetId() );    event.SetEventObject( this );    event.SetCurve( m_curve );    GetEventHandler()->ProcessEvent( event );}\end{verbatim}}%

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -