檢視原始碼 wxEvtHandler (wx v2.4.3)
事件處理器
一個可以處理來自視窗系統事件的類別。wxWindow
(因此所有視窗類別) 都是由此類別衍生而來。
要從 wxwidgets 物件取得事件,您需要呼叫 connect/3
來訂閱它們。
如果沒有提供 callback
選項,事件將會以訊息形式傳送。
這些訊息將會是 #wx{}
,其中 EventRecord
是一個根據 wxEventType
而定的記錄。這些記錄定義在:wx/include/wx.hrl
。
如果提供了一個回呼函式給 connect,回呼函式將會被呼叫 (在另一個程序中) 來處理事件。回呼函式應該要有兩個參數。
fun Callback (EventRecord::wx(), EventObject::wxObject()).
注意:每次回呼函式都會在新的程序中執行。
請參閱:事件總覽
wxWidgets 文件:wxEvtHandler
摘要
型別
-type event() :: wxActivateEvent:wxActivate() | wxAuiManagerEvent:wxAuiManager() | wxAuiNotebookEvent:wxAuiNotebook() | wxBookCtrlEvent:wxBookCtrl() | wxCalendarEvent:wxCalendar() | wxChildFocusEvent:wxChildFocus() | wxClipboardTextEvent:wxClipboardText() | wxCloseEvent:wxClose() | wxColourPickerEvent:wxColourPicker() | wxCommandEvent:wxCommand() | wxContextMenuEvent:wxContextMenu() | wxDateEvent:wxDate() | wxDisplayChangedEvent:wxDisplayChanged() | wxDropFilesEvent:wxDropFiles() | wxEraseEvent:wxErase() | wxFileDirPickerEvent:wxFileDirPicker() | wxFocusEvent:wxFocus() | wxFontPickerEvent:wxFontPicker() | wxGridEvent:wxGrid() | wxHelpEvent:wxHelp() | wxHtmlLinkEvent:wxHtmlLink() | wxIconizeEvent:wxIconize() | wxIdleEvent:wxIdle() | wxInitDialogEvent:wxInitDialog() | wxJoystickEvent:wxJoystick() | wxKeyEvent:wxKey() | wxListEvent:wxList() | wxMaximizeEvent:wxMaximize() | wxMenuEvent:wxMenu() | wxMouseCaptureChangedEvent:wxMouseCaptureChanged() | wxMouseCaptureLostEvent:wxMouseCaptureLost() | wxMouseEvent:wxMouse() | wxMoveEvent:wxMove() | wxNavigationKeyEvent:wxNavigationKey() | wxPaintEvent:wxPaint() | wxPaletteChangedEvent:wxPaletteChanged() | wxQueryNewPaletteEvent:wxQueryNewPalette() | wxSashEvent:wxSash() | wxScrollEvent:wxScroll() | wxScrollWinEvent:wxScrollWin() | wxSetCursorEvent:wxSetCursor() | wxShowEvent:wxShow() | wxSizeEvent:wxSize() | wxSpinEvent:wxSpin() | wxSplitterEvent:wxSplitter() | wxStyledTextEvent:wxStyledText() | wxSysColourChangedEvent:wxSysColourChanged() | wxTaskBarIconEvent:wxTaskBarIcon() | wxTreeEvent:wxTree() | wxUpdateUIEvent:wxUpdateUI() | wxWebViewEvent:wxWebView() | wxWindowCreateEvent:wxWindowCreate() | wxWindowDestroyEvent:wxWindowDestroy().
-type wx() :: #wx{id :: integer(), obj :: wx:wx_object(), userData :: term(), event :: event()}.
-type wxEventType() :: wxActivateEvent:wxActivateEventType() | wxAuiManagerEvent:wxAuiManagerEventType() | wxAuiNotebookEvent:wxAuiNotebookEventType() | wxBookCtrlEvent:wxBookCtrlEventType() | wxCalendarEvent:wxCalendarEventType() | wxChildFocusEvent:wxChildFocusEventType() | wxClipboardTextEvent:wxClipboardTextEventType() | wxCloseEvent:wxCloseEventType() | wxColourPickerEvent:wxColourPickerEventType() | wxCommandEvent:wxCommandEventType() | wxContextMenuEvent:wxContextMenuEventType() | wxDateEvent:wxDateEventType() | wxDisplayChangedEvent:wxDisplayChangedEventType() | wxDropFilesEvent:wxDropFilesEventType() | wxEraseEvent:wxEraseEventType() | wxFileDirPickerEvent:wxFileDirPickerEventType() | wxFocusEvent:wxFocusEventType() | wxFontPickerEvent:wxFontPickerEventType() | wxGridEvent:wxGridEventType() | wxHelpEvent:wxHelpEventType() | wxHtmlLinkEvent:wxHtmlLinkEventType() | wxIconizeEvent:wxIconizeEventType() | wxIdleEvent:wxIdleEventType() | wxInitDialogEvent:wxInitDialogEventType() | wxJoystickEvent:wxJoystickEventType() | wxKeyEvent:wxKeyEventType() | wxListEvent:wxListEventType() | wxMaximizeEvent:wxMaximizeEventType() | wxMenuEvent:wxMenuEventType() | wxMouseCaptureChangedEvent:wxMouseCaptureChangedEventType() | wxMouseCaptureLostEvent:wxMouseCaptureLostEventType() | wxMouseEvent:wxMouseEventType() | wxMoveEvent:wxMoveEventType() | wxNavigationKeyEvent:wxNavigationKeyEventType() | wxPaintEvent:wxPaintEventType() | wxPaletteChangedEvent:wxPaletteChangedEventType() | wxQueryNewPaletteEvent:wxQueryNewPaletteEventType() | wxSashEvent:wxSashEventType() | wxScrollEvent:wxScrollEventType() | wxScrollWinEvent:wxScrollWinEventType() | wxSetCursorEvent:wxSetCursorEventType() | wxShowEvent:wxShowEventType() | wxSizeEvent:wxSizeEventType() | wxSpinEvent:wxSpinEventType() | wxSplitterEvent:wxSplitterEventType() | wxStyledTextEvent:wxStyledTextEventType() | wxSysColourChangedEvent:wxSysColourChangedEventType() | wxTaskBarIconEvent:wxTaskBarIconEventType() | wxTreeEvent:wxTreeEventType() | wxUpdateUIEvent:wxUpdateUIEventType() | wxWebViewEvent:wxWebViewEventType() | wxWindowCreateEvent:wxWindowCreateEventType() | wxWindowDestroyEvent:wxWindowDestroyEventType().
-type wxEvtHandler() :: wx:wx_object().
函式
-spec connect(This :: wxEvtHandler(), EventType :: wxEventType()) -> ok.
-spec connect(This :: wxEvtHandler(), EventType :: wxEventType(), [Option]) -> ok when Option :: {id, integer()} | {lastId, integer()} | {skip, boolean()} | callback | {callback, function()} | {userData, term()}.
此函式用於訂閱事件。
訂閱類型為 EventType
的事件,範圍在 id
、lastId
之間。
如果沒有提供回呼函式,事件將會以訊息形式接收。
選項
id:{id, integer()}
與此事件處理器相關聯的識別符 (或識別符範圍的起始)。預設值為 ?wxID_ANY
lastid:{lastId,integer()}
識別符範圍的第二部分。如果使用,'id' 必須設定為起始識別符範圍。預設值為 ?wxID_ANY
skip:{skip,boolean()}
如果 skip 為 true,則會呼叫進一步的事件處理器。如果使用 'callback' 選項則不會使用此項。預設值為 false
。
callback:{callback,function()}
使用回呼函式fun(EventRecord::wx(),EventObject::wxObject())
來處理事件。預設值為未指定,即訊息將會傳遞至呼叫此函式的程序。
userData:{userData,term()}
一個將會與事件一起傳送的 Erlang 項。預設值:[]。
-spec disconnect(This :: wxEvtHandler()) -> boolean().
-spec disconnect(This :: wxEvtHandler(), EventType :: wxEventType()) -> boolean().
-spec disconnect(This :: wxEvtHandler(), EventType :: wxEventType(), [Option]) -> boolean() when Option :: {id, integer()} | {lastId, integer()} | {callback, function()}.
此函式用於取消程序或回呼函式對事件處理器的訂閱。
EventType 可以是原子 'null' 以匹配任何事件類型。請注意,選項 skip 和 userdata 不會用於匹配事件處理器。