wxWidgets事件定義

wxWidgets通過事件的形式進行各個模塊之間的通知

一般有2種情況下的事件, 一種是框架預先定義了一些公共的事件, 這些值的範圍在wxID_LOWEST和wxID_HIGHEST之間

還有一種是自定義的事件, 一般可以通過wxID_XXX事件的形式定義

 

 

包含的主要類:wxEvtHandler, wxWindow, wxEvent

介紹:

在2.0之前, 事件處理通過回調的虛函數來支持, 比如說OnSize, 在2.0之後, 使用事件表來代替, 並使用部分異常

一個事件表替代實現文件來告訴wxWidgets如何實現事件到函數的映射, 這些函數不在是虛函數,名字可以自定義, 但是必須得有一個事件參數和返回爲void

 

類似的定義:

事件類型, 事件ID, 對應的調用函數

image

流程

定義事件名:

image

定義事件表:

image

這個宏,可以出現在類的任何部分(公共,保護或私有),但它可能是更好的插入在結束時,因爲這個宏可能會改變訪問保護模式,這可能會產生意外
最後,如果你不喜歡使用靜態初始化的事件表,你也可以動態使用wxEvtHandler宏::連接到連接的事件處理程序在運行時,動態。看到事件的樣本,這樣做的一個例子。

事件傳播方式:

一些基礎事件:

wxEvent                              基礎事件

wxActivateEvent               激活窗口或者應用時候的激活事件

wxCloseEvent                    關閉窗口或者結束會話事件

wxEraseEvent                     擦除背景事件

wxFocusEvent                    焦點改變事件

wxKeyEvent                        鍵盤按鍵事件

wxIdleEvent                         死亡事件

wxInitDialogEvent              初始化對話框事件

wxJoystickEvent                 滑動杆事件

wxMenuEvent                     菜單事件

wxMouseEvent                   鼠標事件

wxMoveEvent                     移動事件

wxPaintEvent                      繪製事件

wxQueryLayoutInfoEvent 佈局事件

wxSetCursorEvent             設置鼠標

wxSizeEvent                        改變大小事件

wxScrollWinEvent              滾動窗口事件

wxSysColourChangedEvent 系統顏色改變事件

wxCommandEvent         命令事件

 

一些控件的事件命令

EVT_COMMAND(id, event, func) EVT_COMMAND_RANGE(id1, id2, event, func) EVT_BUTTON(id, func) EVT_CHECKBOX(id, func) EVT_CHOICE(id, func) EVT_COMBOBOX(id, func) EVT_LISTBOX(id, func) EVT_LISTBOX_DCLICK(id, func) EVT_MENU(id, func) EVT_MENU_RANGE(id1, id2, func) EVT_CONTEXT_MENU(func) EVT_RADIOBOX(id, func) EVT_RADIOBUTTON(id, func) EVT_SCROLLBAR(id, func) EVT_SLIDER(id, func) EVT_TEXT(id, func) EVT_TEXT_ENTER(id, func) EVT_TEXT_MAXLEN(id, func) EVT_TOGGLEBUTTON(id, func) EVT_TOOL(id, func) EVT_TOOL_RANGE(id1, id2, func) EVT_TOOL_RCLICKED(id, func) EVT_TOOL_RCLICKED_RANGE(id1, id2, func) EVT_TOOL_ENTER(id, func) EVT_COMMAND_LEFT_CLICK(id, func) EVT_COMMAND_LEFT_DCLICK(id, func) EVT_COMMAND_RIGHT_CLICK(id, func) EVT_COMMAND_SET_FOCUS(id, func) EVT_COMMAND_KILL_FOCUS(id, func) EVT_COMMAND_ENTER(id, func)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章