檢視原始碼 wxMouseEvent (wx v2.4.3)
這個事件類別包含由滑鼠產生的事件資訊:包括滑鼠按鈕按下和釋放事件以及滑鼠移動事件。
所有涉及按鈕的滑鼠事件都使用 wxMOUSE_BTN_LEFT
代表滑鼠左鍵、wxMOUSE_BTN_MIDDLE
代表滑鼠中鍵,以及 wxMOUSE_BTN_RIGHT
代表滑鼠右鍵。如果系統支援更多按鈕,也可以產生 wxMOUSE_BTN_AUX1
和 wxMOUSE_BTN_AUX2
事件。請注意,並非所有滑鼠都有中鍵,因此可攜式應用程式應避免依賴中鍵的事件(但在只有單鍵滑鼠的 Mac 平台上,可以使用控制鍵和滑鼠左鍵來模擬右鍵點擊)。
對於 wxEVT_ENTER_WINDOW
和 wxEVT_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/3
和 wxMouseEventType
來訂閱此類型的事件。
摘要
函式
如果按下 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 座標。
如果事件是滑鼠按鈕事件,則返回 true(不一定是按鈕按下事件 - 可以使用 buttonDown/2
進行測試)。
如果系統設定為使用滑鼠滾輪進行頁面滾動而不是行滾動,則返回 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().
-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 鍵和左 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_MIDDLE
和 wxMOUSE_BTN_RIGHT
。
-spec getLinesPerAction(This) -> integer() when This :: wxMouseEvent().
返回每次滾輪動作要滾動的配置行數(或其他)。
大多數平台下的預設值為三。
-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。
這是執行動作的閾值,並且每次增量都應發生一個此類動作(例如,滾動一個增量)。
-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().
如果事件是滑鼠按鈕事件,則返回 true(不一定是按鈕按下事件 - 可以使用 buttonDown/2
進行測試)。
-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 鍵和左 Shift 鍵。
請注意,通常應使用 wxKeyEvent:getModifiers/1
,而不是此函式。