查看源码 wxMouseEvent (wx v2.4.3)

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

所有涉及按钮的鼠标事件都使用 wxMOUSE_BTN_LEFT 表示鼠标左键,wxMOUSE_BTN_MIDDLE 表示鼠标中键,wxMOUSE_BTN_RIGHT 表示鼠标右键。如果系统支持更多按钮,则还可以生成 wxMOUSE_BTN_AUX1wxMOUSE_BTN_AUX2 事件。请注意,并非所有鼠标都有中键,因此可移植应用程序应避免依赖来自中键的事件(但在使用单按钮鼠标的 Mac 平台下,可以使用左鼠标按钮和控制键来模拟右键单击)。

对于 wxEVT_ENTER_WINDOWwxEVT_LEAVE_WINDOW 事件,如果鼠标在窗口客户区域内且不在其任何子窗口内,则认为鼠标在窗口内。换句话说,当鼠标完全离开窗口时,以及当鼠标进入其子窗口之一时,父窗口都会收到 wxEVT_LEAVE_WINDOW 事件。

与鼠标事件相关联的位置以生成事件的窗口的窗口坐标表示,您可以使用 wxWindow:clientToScreen/3 将其转换为屏幕坐标,并且可能接下来调用 wxWindow:screenToClient/2 将其转换为另一个窗口的窗口坐标。

注意:请注意诸如 leftDown/1 之类的方法和继承的 leftIsDown/1 之间的区别:前者在事件对应于鼠标左键单击时返回 true,而后者在鼠标左键当前被按下时返回 true。例如,当用户拖动鼠标时,您可以使用 leftIsDown/1 来测试鼠标左键是否(仍然)被按下。此外,按照惯例,如果 leftDown/1 返回 true,则无论底层 GUI 行为如何(这取决于平台),leftIsDown/1 在 wxWidgets 中也将返回 true。当然,这同样适用于其他鼠标按钮。

参见: wxKeyEvent

这个类是从以下类派生的,并且可以使用其中的函数

wxWidgets 文档: wxMouseEvent

事件

使用 wxEvtHandler:connect/3wxMouseEventType 来订阅此类型的事件。

摘要

函数

如果按下 Alt 键,则返回 true。

如果事件是第一个辅助按钮双击,则返回 true。

如果第一个辅助鼠标按钮变为按下状态,则返回 true。

如果第一个辅助鼠标按钮变为释放状态,则返回 true。

如果事件是第二个辅助按钮双击,则返回 true。

如果第二个辅助鼠标按钮变为按下状态,则返回 true。

如果第二个辅助鼠标按钮变为释放状态,则返回 true。

如果事件是由指定的按钮生成的,则返回 true。

如果省略参数,则当事件为鼠标双击事件时,此函数返回 true。

如果省略参数,则当事件为鼠标按钮按下事件时,此函数返回 true。

如果省略参数,则当事件为鼠标按钮释放事件时,此函数返回 true。

如果用于命令加速器的键被按下,则返回 true。

如果按下 Control 键或 macOS 下的 Apple/Command 键,则返回 true。

如果此事件是拖动事件(按下按钮时的移动),则返回 true。

如果鼠标正在进入窗口,则返回 true。

返回生成此事件的鼠标按钮,如果没有涉及按钮(例如,对于鼠标移动、进入或离开事件),则返回 wxMOUSE_BTN_NONE

返回每个滚轮动作要滚动的配置行数(或其他)。

返回以像素为单位的逻辑鼠标位置(即根据为 DC 设置的转换进行转换,通常表示窗口已滚动)。

返回物理鼠标位置。

获取滚轮操作所针对的轴。

获取滚轮增量,通常为 120。

获取滚轮旋转,正值或负值表示旋转方向。

返回物理鼠标事件位置的 X 坐标。

返回物理鼠标事件位置的 Y 坐标。

如果事件是鼠标按钮事件(不一定是按钮按下事件 - 可以使用 buttonDown/2 进行测试),则返回 true。

如果系统已设置为使用鼠标滚轮进行页面滚动而不是行滚动,则返回 true。

如果鼠标正在离开窗口,则返回 true。

如果事件是左键双击,则返回 true。

如果鼠标左键变为按下状态,则返回 true。

如果鼠标左键当前被按下,则返回 true。

如果鼠标左键变为释放状态,则返回 true。

如果在事件发生时 Meta 键被按下,则返回 true。

如果事件是中键双击,则返回 true。

如果鼠标中键变为按下状态,则返回 true。

如果鼠标中键当前被按下,则返回 true。

如果鼠标中键变为释放状态,则返回 true。

如果这是一个移动事件且没有按下鼠标按钮,则返回 true。

如果事件是右键双击,则返回 true。

如果鼠标右键变为按下状态,则返回 true。

如果鼠标右键当前被按下,则返回 true。

如果鼠标右键变为释放状态,则返回 true。

如果按下 Shift 键,则返回 true。

类型

-type wxMouse() ::
          #wxMouse{type :: wxMouseEvent:wxMouseEventType(),
                   x :: integer(),
                   y :: integer(),
                   leftDown :: boolean(),
                   middleDown :: boolean(),
                   rightDown :: boolean(),
                   controlDown :: boolean(),
                   shiftDown :: boolean(),
                   altDown :: boolean(),
                   metaDown :: boolean(),
                   wheelRotation :: integer(),
                   wheelDelta :: integer(),
                   linesPerAction :: integer()}.
-type wxMouseEvent() :: wx:wx_object().
-type wxMouseEventType() ::
          left_down | left_up | middle_down | middle_up | right_down | right_up | motion |
          enter_window | leave_window | left_dclick | middle_dclick | right_dclick | mousewheel |
          aux1_down | aux1_up | aux1_dclick | aux2_down | aux2_up | aux2_dclick.

函数

-spec altDown(This) -> boolean() when This :: wxMouseEvent().

如果按下 Alt 键,则返回 true。

请注意,通常应使用 wxKeyEvent:getModifiers/1 而不是此函数。

-spec aux1DClick(This) -> boolean() when This :: wxMouseEvent().

如果事件是第一个辅助按钮双击,则返回 true。

-spec aux1Down(This) -> boolean() when This :: wxMouseEvent().

如果第一个辅助鼠标按钮变为按下状态,则返回 true。

-spec aux1Up(This) -> boolean() when This :: wxMouseEvent().

如果第一个辅助鼠标按钮变为释放状态,则返回 true。

-spec aux2DClick(This) -> boolean() when This :: wxMouseEvent().

如果事件是第二个辅助按钮双击,则返回 true。

-spec aux2Down(This) -> boolean() when This :: wxMouseEvent().

如果第二个辅助鼠标按钮变为按下状态,则返回 true。

-spec aux2Up(This) -> boolean() when This :: wxMouseEvent().

如果第二个辅助鼠标按钮变为释放状态,则返回 true。

-spec button(This, But) -> boolean() when This :: wxMouseEvent(), But :: wx:wx_enum().

如果事件是由指定的按钮生成的,则返回 true。

-spec buttonDClick(This) -> boolean() when This :: wxMouseEvent().

等效于 buttonDClick(This, [])

-spec buttonDClick(This, [Option]) -> boolean()
                      when This :: wxMouseEvent(), Option :: {but, wx:wx_enum()}.

如果省略参数,则当事件为鼠标双击事件时,此函数返回 true。

否则,参数指定生成的是哪个双击事件(有关可能的值,请参见 button/2)。

-spec buttonDown(This) -> boolean() when This :: wxMouseEvent().

等效于 buttonDown(This, [])

-spec buttonDown(This, [Option]) -> boolean() when This :: wxMouseEvent(), Option :: {but, wx:wx_enum()}.

如果省略参数,则当事件为鼠标按钮按下事件时,此函数返回 true。

否则,参数指定生成的是哪个按钮按下事件(有关可能的值,请参见 button/2)。

-spec buttonUp(This) -> boolean() when This :: wxMouseEvent().

等效于 buttonUp(This, [])

-spec buttonUp(This, [Option]) -> boolean() when This :: wxMouseEvent(), Option :: {but, wx:wx_enum()}.

如果省略参数,则当事件为鼠标按钮释放事件时,此函数返回 true。

否则,参数指定生成的是哪个按钮释放事件(有关可能的值,请参见 button/2)。

-spec cmdDown(This) -> boolean() when This :: wxMouseEvent().

如果用于命令加速器的键被按下,则返回 true。

controlDown/1 相同。已弃用。

请注意,通常应使用 wxKeyEvent:getModifiers/1 而不是此函数。

-spec controlDown(This) -> boolean() when This :: wxMouseEvent().

如果按下 Control 键或 macOS 下的 Apple/Command 键,则返回 true。

此函数不区分右侧和左侧的 Control 键。

请注意,通常应使用 wxKeyEvent:getModifiers/1 而不是此函数。

-spec dragging(This) -> boolean() when This :: wxMouseEvent().

如果此事件是拖动事件(按下按钮时的移动),则返回 true。

参见:moving/1

-spec entering(This) -> boolean() when This :: wxMouseEvent().

如果鼠标正在进入窗口,则返回 true。

参见:leaving/1

-spec getButton(This) -> integer() when This :: wxMouseEvent().

返回生成此事件的鼠标按钮,如果没有涉及按钮(例如,对于鼠标移动、进入或离开事件),则返回 wxMOUSE_BTN_NONE

否则,对于左键按下、释放和双击事件,返回 wxMOUSE_BTN_LEFT;对于中键和右键的相同事件,分别返回 wxMOUSE_BTN_MIDDLEwxMOUSE_BTN_RIGHT

链接到此函数

getLinesPerAction(This)

查看源码
-spec getLinesPerAction(This) -> integer() when This :: wxMouseEvent().

返回每个滚轮动作要滚动的配置行数(或其他)。

在大多数平台下,默认值为 3。

链接到此函数

getLogicalPosition(This, Dc)

查看源码
-spec getLogicalPosition(This, Dc) -> {X :: integer(), Y :: integer()}
                            when This :: wxMouseEvent(), Dc :: wxDC:wxDC().

返回以像素为单位的逻辑鼠标位置(即根据为 DC 设置的转换进行转换,通常表示窗口已滚动)。

-spec getPosition(This) -> {X :: integer(), Y :: integer()} when This :: wxMouseEvent().

返回物理鼠标位置。

-spec getWheelAxis(This) -> wx:wx_enum() when This :: wxMouseEvent().

获取滚轮操作所针对的轴。

通常,鼠标滚轮用于垂直滚动,因此返回 wxMOUSE_WHEEL_VERTICAL,但某些鼠标(和大多数触控板)也允许使用滚轮进行水平滚动,在这种情况下,返回 wxMOUSE_WHEEL_HORIZONTAL

请注意,在 wxWidgets 2.9.4 之前,此方法返回 int

-spec getWheelDelta(This) -> integer() when This :: wxMouseEvent().

获取滚轮增量,通常为 120。

这是采取操作的阈值,并且对于每个增量,应发生一个这样的操作(例如,滚动一个增量)。

链接到此函数

getWheelRotation(This)

查看源码
-spec getWheelRotation(This) -> integer() when This :: wxMouseEvent().

获取滚轮旋转,正值或负值表示旋转方向。

当前设备都在旋转至少 +/- WheelDelta 时发送事件,但将来可以创建分辨率更高的设备。

因此,您不应假设一个事件等于 1 行,而应能够进行部分行滚动或等待多个事件累积后再滚动。

-spec getX(This) -> integer() when This :: wxMouseEvent().

返回物理鼠标事件位置的 X 坐标。

-spec getY(This) -> integer() when This :: wxMouseEvent().

返回物理鼠标事件位置的 Y 坐标。

-spec isButton(This) -> boolean() when This :: wxMouseEvent().

如果事件是鼠标按钮事件(不一定是按钮按下事件 - 可以使用 buttonDown/2 进行测试),则返回 true。

-spec isPageScroll(This) -> boolean() when This :: wxMouseEvent().

如果系统已设置为使用鼠标滚轮进行页面滚动而不是行滚动,则返回 true。

-spec leaving(This) -> boolean() when This :: wxMouseEvent().

如果鼠标正在离开窗口,则返回 true。

参见:entering/1

-spec leftDClick(This) -> boolean() when This :: wxMouseEvent().

如果事件是左键双击,则返回 true。

-spec leftDown(This) -> boolean() when This :: wxMouseEvent().

如果鼠标左键变为按下状态,则返回 true。

-spec leftIsDown(This) -> boolean() when This :: wxMouseEvent().

如果鼠标左键当前被按下,则返回 true。

-spec leftUp(This) -> boolean() when This :: wxMouseEvent().

如果鼠标左键变为释放状态,则返回 true。

-spec metaDown(This) -> boolean() when This :: wxMouseEvent().

如果在事件发生时 Meta 键被按下,则返回 true。

-spec middleDClick(This) -> boolean() when This :: wxMouseEvent().

如果事件是中键双击,则返回 true。

-spec middleDown(This) -> boolean() when This :: wxMouseEvent().

如果鼠标中键变为按下状态,则返回 true。

-spec middleIsDown(This) -> boolean() when This :: wxMouseEvent().

如果鼠标中键当前被按下,则返回 true。

-spec middleUp(This) -> boolean() when This :: wxMouseEvent().

如果鼠标中键变为释放状态,则返回 true。

-spec moving(This) -> boolean() when This :: wxMouseEvent().

如果这是一个移动事件且没有按下鼠标按钮,则返回 true。

如果按住任何鼠标按钮,则此方法返回 false,并且 dragging/1 返回 true。

-spec rightDClick(This) -> boolean() when This :: wxMouseEvent().

如果事件是右键双击,则返回 true。

-spec rightDown(This) -> boolean() when This :: wxMouseEvent().

如果鼠标右键变为按下状态,则返回 true。

-spec rightIsDown(This) -> boolean() when This :: wxMouseEvent().

如果鼠标右键当前被按下,则返回 true。

-spec rightUp(This) -> boolean() when This :: wxMouseEvent().

如果鼠标右键变为释放状态,则返回 true。

-spec shiftDown(This) -> boolean() when This :: wxMouseEvent().

如果按下 Shift 键,则返回 true。

此函数不区分右侧和左侧的 Shift 键。

请注意,通常应使用 wxKeyEvent:getModifiers/1 而不是此函数。