C++GUI之wxWidgets(12)-编写应用涉及的类和方法(7)-事件处理(6)

按类别列出的事件类别列表






事件对象包含有关特定事件的信息。


事件处理程序(通常是成员函数)只有一个事件参数。


相关概述:事件和事件处理


相关宏/全局函数组:事件

类别

类wxColourDialogEvent

此事件类用于wxColourDialog生成的事件。更多

 

wxEventFilter类

用于预处理程序中生成的所有事件的全局事件筛选器。更多

 

类wxKeyboardState

提供测试键盘修改键状态的方法。更多

 

wxTreeListEvent类

wxTreeListCtrl生成的事件。更多

 

wxAuiToolBarEvent类

wxAuiToolBarEvent用于wxAueToolBar生成的事件。更多

 

wxAuiNotebookEvent类

此类由wxAuiNotebook生成的事件使用。更多

 

wxAuiManagerEvent类

事件,用于指示使用wxAuiManager执行的各种操作。更多

 

wxBookCtrlEvent类

此类表示书本控件(wxNotebook、wxListbook、wxChoicebook、wxDreebook、wxMauiNotebook)生成的事件。更多

 

wxCalendarEvent类

wxCalendarEvent类与wxCalendarCtrl一起使用。更多

 

类wxColourPickerEvent

此事件类用于wxColourPickerCtrl生成的事件。更多

 

类wxCollablePaneEvent

此事件类用于wxCollablePane生成的事件。更多

 

类wxDataViewEvent

这是wxDataViewCtrl通知的事件类。更多

 

类wxDateEvent

此事件类保存有关日期更改的信息,并与wxDatePickerCtrl一起使用。更多

 

类wxDialUpEvent

这是wxDialUpManager发送的拨号事件的事件类。更多

 

wxEvent类

事件是保存传递给回调或成员函数的事件信息的结构。更多

 

wxEventBlocker类

此类是一个特殊的事件处理程序,允许丢弃指向特定窗口的任何事件(或一组事件类型)。更多

 

wxEvtHandler类

可以处理来自窗口系统的事件的类。更多

 

类wxKeyEvent

此事件类包含有关按键和释放事件的信息。更多

 

类wxJoystick事件

此事件类包含有关操纵杆事件的信息,特别是由窗口接收的事件。更多

 

wxScrollWinEvent类

滚动事件保存有关从滚动窗口发送的事件的信息。更多

 

类wxSysColourChangedEvent

此类用于系统颜色更改事件,当用户更改颜色设置或系统主题更改时(例如macOS上的自动暗模式切换),会生成这些事件。更多

 

类wxCommandEvent

此事件类包含有关命令事件的信息,这些事件源自各种简单控件。更多

 

类wxWindowCreateEvent

此事件在创建与wxWindow对象关联的实际窗口之后发送。更多

 

类wxPaintEvent

当需要重新绘制窗口内容时,将发送绘制事件。更多

 

类wxMaximizeEvent

当顶级窗口最大化时发送的事件。更多

 

类wxFullScreenEvent

当用户进入或退出全屏模式时发送的事件。更多

 

类wxUpdateUIEvent

此类用于wxWidgets调用的伪事件,以使应用程序有机会更新各种用户界面元素。更多

 

类wxClipboardTextEvent

此类表示当控件的内容被复制、剪切到剪贴板或从剪贴板粘贴时,控件(通常是wxTextCtrl,但其他窗口也可以生成这些事件)生成的事件。更多

 

类wxMouseEvent

此事件类包含有关鼠标生成的事件的信息:它们包括鼠标按钮按下和释放事件以及鼠标移动事件。更多

 

类wxDropFilesEvent

此类用于放置文件事件,即文件已放置到窗口上时。更多

 

wxActivateEvent类

激活或停用窗口或应用程序时,会发送激活事件。更多

 

类wxContextMenuEvent

该类用于上下文菜单事件,发送该事件是为了让应用程序有机会显示wxWindow的上下文(弹出)菜单。更多

 

类wxEraseEvent

当需要重新绘制窗口背景时,将发送擦除事件。更多

 

类wxFocusEvent

当窗口焦点更改时,将发送焦点事件。更多

 

类wxChildFocusEvent

当一个子窗口获得焦点时,子焦点事件被发送到一个(父-)窗口,这样,如果该窗口现在失去焦点,稍后重新获得焦点,则该窗口可以将焦点恢复到相应的子窗口。更多

 

类wxMouseCaptureLostEvent

鼠标捕获丢失事件被发送到已获得鼠标捕获的窗口,该窗口随后由于“外部”事件而丢失(例如,当显示对话框或其他应用程序捕获鼠标时)。更多

 

类wxDisplayChangedEvent

显示分辨率更改后,显示更改事件将发送到顶级窗口。更多

 

wxDPIChangedEvent类

当监视器窗口的显示比例因子或像素密度(以每英寸点数或DPI为单位)发生变化时发送的事件。更多

 

类wxNotifyEvent

该类本身不由事件处理程序使用,而是其他事件类(如wxBookCtrlEvent)的基类。更多

 

类wxThreadEvent

此类为wxEvent添加了一些简单的功能,以促进线程间通信。更多

 

类wxHelpEvent

当用户请求上下文相关帮助时,将发送帮助事件。更多

 

类wxScrollEvent

滚动事件保存有关从独立滚动条(请参见wxScrollBar)和滑块(请参见w xSlider)发送的事件的信息。更多

 

类wxGestureEvent

这是所有支持的手势事件的基类。更多

 

类wxPanGestureEvent

当用户在表面上移动手指时,会生成此事件。更多

 

类wxZoomGestureEvent

当两个手指捏住曲面以放大或缩小时,会生成此事件。更多

 

类wxRotateGestureEvent

当两个手指在表面上以相反方向移动时,会生成此事件。更多

 

类wxTwoFingerTapEvent

当两个手指同时触摸表面时,会生成此事件。更多

 

类wxLongPressEvent

当一根手指触摸表面并保持静止时,会生成此事件。更多

 

wxPressAndTapEvent类

当用户用一根手指按压表面并用另一根手指轻敲时,会生成此事件。更多

 

类wxIdleEvent

此类用于空闲事件,这些事件在系统空闲时生成。更多

 

类wxInitDialogEvent

wxInitDialogEvent在初始化对话框或面板时发送。更多

 

类wxWindowDestroyEvent

此事件将在窗口销毁过程中尽早发送。更多

 

类wxNavigationKeyEvent

此事件类包含有关导航事件的信息,这些信息由导航键(如tab和page down)生成。更多

 

类wxMouseCaptureChangedEvent

鼠标捕获更改事件被发送到丢失其鼠标捕获的窗口。更多

 

类wxCloseEvent

此事件类包含有关窗口和会话关闭事件的信息。更多

 

类wxMenuEvent

此类用于各种与菜单相关的事件。更多

 

wxShowEvent类

显示或隐藏窗口时发送的事件。更多

 

类wxIconizeEvent

当帧被图标化(最小化)或还原时发送的事件。更多

 

类wxMoveEvent

移动事件保存有关窗口位置更改的信息。更多

 

类wxSizeEvent

大小事件保存有关wxWindow的大小更改事件的信息。更多

 

类wxSetCursorEvent

当鼠标光标将被设置为鼠标运动的结果时,wxWindow将生成wxSetCursorEvent。更多

 

类wxFindDialogEvent

wxFindReplaceDialog事件。更多

 

类wxFileCtrlEvent

文件控制事件保存有关与wxFileCtrl对象关联的事件的信息。更多

 

类wxFileDirPickerEvent

此事件类用于wxFilePickerCtrl和wxDirPickerCtrt生成的事件。更多

 

类wxFontPickerEvent

此事件类用于wxFontPickerCtrl生成的事件。更多

 

wxFileSystemWatcherEvent类

发生文件系统事件时发送的一类事件。更多

 

类wxGridEvent

此事件类包含有关各种网格事件的信息。更多

 

类wxGridSizeEvent

此事件类包含有关行/列调整大小事件的信息。更多

 

类wxGridRangeSelectEvent

此类事件通知所选单元格的范围。更多

 

类wxGridEditorCreatedEvent

 

类wxHeaderCtrlEvent

表示wxHeaderCtrl生成的事件的事件类。更多

 

类wxHtmlLinkEvent

此事件类用于wxHtmlWindow生成的事件。更多

 

类wxHtmlCellEvent

此事件类用于wxHtmlWindow生成的事件。更多

 

类wxHyperlinkEvent

此事件类用于wxHyperlinkCtrl生成的事件。更多

 

类wxQueryLayoutInfoEvent

当wxLayoutAlgorithm希望获取窗口的大小、方向和对齐方式时,会发送此事件。更多

 

类wxCalculateLayoutEvent

此事件由wxLayoutAlgorithm发送,以计算窗口应占用的剩余客户端区域的数量。更多

 
类wxListEvent

列表事件保存有关与wxListCtrl对象关联的事件的信息。更多

 

类wxMediaEvent

事件wxMediaCtrl使用。更多

 

类wxMouseEventsManager

用于在包含多个项目的窗口中处理鼠标输入事件的帮助程序。更多

 

wxMouseState类

表示鼠标状态。更多

 

wxActiveXEvent类

用于处理从wxActiveXContainer传递的ActiveX事件的事件类。更多

 

wxPowerEvent类

当系统电源状态发生变化时,会生成电源事件,例如更多。。。

 

wxProcessEvent类

当进程终止时,将向指定给wxProcess的wxEvtHandler发送进程事件。更多

 

类wxPropertyGridEvent

属性网格事件保存有关与wxPropertyGrid对象关联的事件的信息。更多

 

类wxRibbonBarEvent

用于指示与wxRibbonBar相关的各种操作的事件。更多

 

类wxRibbonButtonBarEvent

事件,用于指示与wxRibbonButtonBar上的按钮相关的各种操作。更多

 

类wxRibbonGalleryEvent

 

类wxRibbonPanelEvent

用于指示与wxRibbonPanel相关的各种操作的事件。更多

 

类wxRichTextEvent

这是wxRichTextCtrl通知的事件类。更多

 

类wxSashEvent

当用户拖动wxSashWindow的窗扇时,将发送窗扇事件。更多

 

类wxSocketEvent

此事件类包含有关套接字事件的信息。更多

 

类wxSpinEvent

此事件类用于wxSpinButton和wxSpinCtrl生成的事件。更多

 

类wxSpinDoubleEvent

此事件类用于wxSpinCtrlDouble生成的事件。更多

 

类wxSplitterEvent

此类表示拆分器控件生成的事件。更多

 

类wxStyledTextEvent

从wxStyledTextCtrl发送的事件类型。更多

 

类wxTaskBarIconEvent

wxTaskBarIcon使用的事件类。更多

 

wxTimerEvent类

wxTimerEvent对象被传递给计时器事件的事件处理程序(请参见wxTimer::SetOwner)。更多

 

wxTreeEvent类

树事件保存与wxTreeCtrl对象关联的事件的信息。更多

 

类wxWebRequestEvent

在服务器通信期间或之后发送的web请求事件。更多

 

类wxWebViewEvent

导航事件保存有关与wxWebView对象关联的事件的信息。更多

 

wxWizardEvent类

wxWizardEvent类表示由wxWizard生成的事件:该事件首先发送到页面本身,如果没有在那里处理,则会像往常一样在窗口层次结构中上升。

用户生成事件与程序生成事件

虽然一般来说,wxEvents可以通过用户操作(例如,调整wxWindow的大小)和调用函数(例如,wxWindow::SetSize)生成,但wxWidget控件通常只为用户生成的事件发送wxCommandEvent派生的事件。此规则的唯一例外是:

wxNotebook::AddPage:没有无事件的替代方案

wxNotebook::AdvanceSelection:没有无事件的替代方案

wxNotebook::DeletePage:没有无事件的替代方案

wxNotebook::Setelection:改用wxNotebook::ChangeSelection,因为wxNoteNote::Setelections已弃用

wxTreeCtrl::Delete:没有无事件的替代方案

wxTreeCtrl::DeleteAllItems:没有无事件的替代方案

wxTreeCtrl::EditLabel:没有无事件的替代方案

所有wxTextCtrl方法

可以使用wxTextCtrl::ChangeValue代替wxTextCtrl::SetValue,但其他函数(如wxTextctCtrl::Replace或wxTextCtrl+:WriteText)没有无事件的等效函数。

可插拔事件处理程序

可能已弃用,Bind()提供了更好的方法

事实上,如果您不想从窗口类派生新类,则不必从窗口类中派生新类。您可以从wxEvtHandler派生一个新类,定义适当的事件表,然后调用wxWindow::SetEventHandler(或者,最好是wxWindow::PushEventHandler),使该事件处理程序成为响应事件的对象。通过这种方式,您可以避免大量的类派生,并使用相同事件处理程序类的实例(但同一事件处理程序对象的不同对象不应多次使用)来处理来自不同小部件类实例的事件。

如果必须手动调用窗口的事件处理程序,请使用GetEventHandler函数检索窗口的事件处理器,并使用它调用成员函数。默认情况下,GetEventHandler返回指向窗口本身的指针,除非应用程序使用SetEventHandler或PushEventHandler重定向了事件处理。

PushEventHandler的一个用途是临时或永久地更改GUI的行为。例如,您可能希望在应用程序中调用一个对话框编辑器来更改对话框的各个方面。您可以获取现有对话框的所有输入,并“就地”编辑它,然后将其行为恢复到正常状态。因此,即使应用程序已经派生出新的类来定制行为,您的实用程序也可能会陷入一种身体抢夺的境地。对于在线教程来说,这也是一种有用的技术,在那里,您可以引导用户完成一系列步骤,而不希望他们偏离课程。在这里,您可以检查来自按钮和窗口的事件,如果可以接受,则将它们传递给原始事件处理程序。使用PushEventHandler/PopEventHandler形成事件处理程序链,其中每个处理程序独立于其他处理程序处理不同范围的事件。

窗口标识符

窗口标识符是整数,用于唯一确定事件系统中的窗口标识(尽管您可以将其用于其他目的)。事实上,标识符不需要在整个应用程序中唯一,只要它们在您感兴趣的特定上下文中是唯一的,例如框架及其子对象。例如,可以在任意数量的对话框上使用wxID_OK标识符,只要在同一对话框中没有多个。

如果将wxID_ANY传递给窗口构造函数,wxWidget将自动为您生成标识符。当您不关心确切的标识符时,这很有用,因为您不打算处理来自正在创建的控件的事件,或者因为您在一个地方处理来自所有控件的事件(在这种情况下,您应该在事件表中指定wxID_ANY或wxEvtHandler::Bind调用)。自动生成的标识符总是负的,因此不会与用户指定的标识符冲突。

有关可用标准标识符的列表,请参阅标准事件标识符。您可以使用wxID_HIGHEST来确定数字,在该数字之上定义自己的标识符是安全的。或者,可以使用wxID_LOWEST以下的标识符。

wxWidgets定义了一个特殊的标识符值wxID_ANY,用于以下两种情况:

创建新窗口时,可以指定wxID_ANY,让wxWidget自动为其分配未使用的标识符

当使用wxEvtHandler::Bind、wxEvt
handler::Connect或事件表宏安装事件处理程序时,可以使用它来指示您希望处理来自任何控件的事件,而不管其标识符如何

另一个标准的特殊标识符值是wxID_NONE:这是一个与任何其他id都不匹配的值。

wxWidgets还定义了一些标准命令标识符,这些标识符可以由用户代码使用,有时也由wxWidget自身使用。这些保留的标识符都在wxID_LOWEST和wxID_HIGHEST之间的范围内,因此,用户代码应避免在此范围内定义自己的常量(例如,通过使用wxID_ANY并在创建控件后检索控件的id)。

标准事件表

wxID_ABOUT &About
wxID_ADD Add
wxID_APPLY &Apply
wxID_BACKWARD &Back
wxID_BOLD &Bold
wxID_BOTTOM &Bottom
wxID_CANCEL &Cancel
wxID_CDROM &CD-ROM
wxID_CLEAR &Clear
wxID_CLOSE &Close
wxID_CONVERT &Convert
wxID_COPY &Copy
wxID_CUT Cu&t
wxID_DELETE &Delete
wxID_DOWN &Down
wxID_EDIT &Edit
wxID_EXECUTE &Execute
wxID_EXIT &Quit
wxID_FILE &File
wxID_FIND &Find…
wxID_FIRST &First
wxID_FLOPPY &Floppy
wxID_FORWARD &Forward
wxID_HARDDISK &Harddisk
wxID_HELP &Help
wxID_HOME &Home
wxID_INDENT Indent
wxID_INDEX &Index
wxID_INFO &Info
wxID_ITALIC &Italic
wxID_JUMP_TO &Jump to
wxID_JUSTIFY_CENTER Centered
wxID_JUSTIFY_FILL Justified
wxID_JUSTIFY_LEFT Align Left
wxID_JUSTIFY_RIGHT Align Right
wxID_LAST &Last
wxID_NETWORK &Network
wxID_NEW &New
wxID_NO &No
wxID_OK &OK
wxID_OPEN &Open…
wxID_PASTE &Paste
wxID_PREFERENCES &Preferences
wxID_PREVIEW Print previe&w
wxID_PRINT &Print…
wxID_PROPERTIES &Properties
wxID_REDO &Redo
wxID_REFRESH Refresh
wxID_REMOVE Remove
wxID_REPLACE Rep&lace…
wxID_REVERT_TO_SAVED Revert to Saved
wxID_SAVE &Save
wxID_SAVEAS Save &As…
wxID_SELECTALL Select &All
wxID_SELECT_COLOR &Color
wxID_SELECT_FONT &Font
wxID_SORT_ASCENDING &Ascending
wxID_SORT_DESCENDING &Descending
wxID_SPELL_CHECK &Spell Check
wxID_STOP &Stop
wxID_STRIKETHROUGH &Strikethrough
wxID_TOP &Top
wxID_UNDELETE Undelete
wxID_UNDERLINE &Underline
wxID_UNDO &Undo
wxID_UNINDENT &Unindent
wxID_UP &Up
wxID_YES &Yes
wxID_ZOOM_100 &Actual Size
wxID_ZOOM_FIT Zoom to &Fit
wxID_ZOOM_IN Zoom &In
wxID_ZOOM_OUT Zoom &Out

事件处理程序和鼠标捕获

某些事件是响应用户使用鼠标执行的操作而生成的,在这种情况下,鼠标通常会被生成事件的窗口捕获(请参见wxWindow::CaptureMouse())。当用户拖动鼠标时,即对于所有涉及调整大小的事件(例如EVT_SPLITTER_SASH_POS_CHANGING),也可能在选择项目时(例如,EVT_LIST_ITEM_SELECTED)发生这种情况。

当鼠标被捕获时,发送事件的控件将继续接收所有鼠标事件,这意味着事件处理程序无法依靠在任何其他窗口中获取它们来执行任何操作。最值得注意的是,简单地显示模式对话框不会像预期的那样工作,因为对话框不会接收任何鼠标输入,并且对用户似乎没有响应。

最好的解决方案是避免完全显示此类事件处理程序的模态对话框,因为突然弹出的对话框可能会打断用户的工作流程。然而,如果显示对话框真的是必不可少的,那么您需要通过自己捕获(然后释放,因为您不需要捕获)来强行打破现有的鼠标捕获:

dialog.CaptureMouse();
dialog.ReleaseMouse();

通用事件表宏

EVT_CUSTOM(event,id,func)允许您通过指定事件标识符(如wxEVT_SIZE)、窗口标识符和要调用的成员函数来添加自定义事件表条目。

EVT_CUSTOM_RANGE(event,id1,id2,func)与EVT_CUSCUSTOM相同,但响应一系列窗口标识符。

EVT_COMMAND(id,event,func)与EVT_CUSTOM相同,但需要具有wxCommandEvent参数的成员函数。

EVT_COMMAND_RANGE(id1,id2,event,func)与EVT_CUSTOM_RANGE相同,但需要具有wxCommandEvent参数的成员函数。

EVT_NOTIFY(event,id,func)与EVT_CUSTOM相同,但需要具有wxNotifyEvent参数的成员函数。

EVT_NOTIFY_RANGE(event,id1,id2,func)与EVT_CUSTOM_RANGE相同,但需要具有wxNotifyEvent参数的成员函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值