MouseMove

MouseMove

MouseMove,在移動滑鼠時發生,語法是一個對象表達式,與對象庫相關。

事件


示例應用於
此事件在移動滑鼠時發生。

語法


Private Sub Form_MouseMove(buttonAs Integer, shiftAs Integer, xAs Single, yAs Single)
Private Sub MDIForm_MouseMove(buttonAs Integer, shiftAs Integer, xAs Single, yAs Single)
Private Subobject_MouseMove([ indexAs Integer,] buttonAs Integer, shiftAs Integer, xAs Single, yAs Single)
MouseMove事件語法包含下列部分:
部分描述
object一個對象表達式,其值是“應用於”列表中的一個對象。
index一個整數,用來唯一地標識一個在控制項數組中的控制項。
button一個整數,它對應滑鼠各個按鈕的狀態,如果某個按鈕按下,其中就有一個二進位位被設置。 button 參數是具有相應於左按鈕(位 0),右按鈕(位 1),以及中間按鈕(位 2)的一個位欄位。這些位的值分別等於 1,2,和 4。它指示這些滑鼠按鈕的整體狀態;三個二進位位中的一些、全部、或一個也沒有被設置,指示這些按鈕中的一些、全部、或一個也沒有被按下。
shift一個整數,該整數相應於 SHIFT,CTRL,和 ALT 鍵的狀態。某鍵被按下使得一個二進位位被設置。 shift參數是具有相應於 SHIFT 鍵(位 0),CTRL 鍵(位 1),以及 ALT 鍵(位 2)最少二進位位的一個位欄位。這些位的值分別等於 1,2,和 4。 shift 參數指示這些鍵的狀態。這些位中可能有一些、全部、或者一個也沒有被設置,指示這些鍵中的一些、全部、或者一個也沒有被按下。例如,CTRL 和 ALT 鍵都被按下,則 shift 的值就是 6。
x, y一個指定滑鼠指針當前位置的數。 x 和 y 的值所表示的總是通過該對象 ScaleHeight, ScaleWidth, ScaleLeft,和 ScaleTop 屬性所建立的坐標系統的方式。

說明


MouseMove事件伴隨滑鼠指針在對象間移動時連續不斷地產生。除非有另一個對象捕獲了滑鼠,否則,當滑鼠位置在對象的邊界範圍內時該對象就能接收 MouseMove事件。
要測試 button 或 shift 參數,可使用對象瀏覽器中的 Visual Basic (VB) 對象庫中所列出的常數,用來定義該參數中的各個位:
常數(按鈕)描述
vbLeftButton1左按鈕按下。
vbRightButton2右按鈕按下。
vbMiddleButton4中間按鈕按下。
常數(換擋)描述
vbShiftMask1SHIFT 鍵按下。
vbCtrlMask2CTRL 鍵按下。
vbAltMask4ALT 鍵按下。
然後這些常數用作位屏蔽,對於按鈕的各種組合,無須計算出各個組合的唯一的位欄位值即可進行檢測。
要測試某一條件,首先將各個結果賦給一個臨時整型變數然後再與一個位屏蔽的 button 或 shift 參數進行比較。測試應當用各個參數進行 And 運算,若結果大於零,則說明該鍵或按鈕被按下。其操作如下:
LeftDown = (Button And vbLeftButton) > 0 CtrlDown = (Shift And vbCtrlMask) > 0
然後,接下去可對結果的各種組合進行檢測,其操作如下:
If LeftDown And CtrlDown Then
注意為了對滑鼠按鈕按下和釋放所引起的事件進行處理,可使用 MouseDown 和 MouseUp 事件過程。
MouseMove事件的 button 參數與 MouseDown 和 MouseUp 事件的 button 參數是不同的。對於 MouseMove事件來說, button 參數指示的是所有按鈕當前的狀態;一個 MouseMove事件可指示某些、全部或沒有一個按鈕被按下。對於 MouseDown 和 MouseUp 事件來說, button 參數在每個事件精確地指示一個按鈕。
在 MouseMove事件中任何時候移動窗口,都能引起層疊事件。當該窗口移動到指針下面時 MouseMove事件將產生。即使是滑鼠完全不動 MouseMove事件也能產生。
MouseMove 事件示例
本例演示一個簡單的繪圖應用程序。當任滑鼠按鈕按下並拖動時,MouseDown 事件過程和一個相關的 MouseMove 事件協同工作以啟動繪圖。 MouseUp 事件過程禁止繪圖。要嘗試這個例子,可將代碼粘貼到一個窗體的聲明部分,然後按 F5 鍵,單擊窗體並在滑鼠按鈕按下時移動滑鼠。
Dim PaintNow As Boolean ' 聲明變數.Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)PaintNow = True ' 啟動繪圖。 End SubPrivate Sub Form_MouseUp (Button As Integer, X As Single, Y As Single)PaintNow = False ' 關閉繪圖。 End SubPrivate Sub Form_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single)If PaintNow ThenPSet (X, Y) ' 畫一個點。 End IfEnd SubPrivate Sub Form_Load ()DrawWidth = 10 ' 使用更寬的刷子。 ForeColor = RGB(0, 0, 255) ' 設置繪圖顏色。 End Sub
應用於:
CheckBox 控制項
CommandButton 控制項
Data 控制項
DirListBox 控制項
FileListBox 控制項
Form 對象、Forms 集合
Frame 控制項
Image 控制項
Label 控制項
ListBox 控制項
MDIForm 對象
OLE 容器控制項
OptionButton 控制項
PictureBox 控制項
PropertyPage 對象
TextBox 控制項
UserControl 對象

相關知識


對象表達式

說明具體對象的表達式,可以包含對象的容器。例如,應用程序可以擁有 Application 對象,其中包含 Document對象,而 Document對象又包含 Text對象。

控制項數組

有一公共名稱、型態、事件過程的一組控制項。數組中的每個控制項都有唯一索引數,可用來決定是哪個控制項識別事件。

對象瀏覽器

一個對話框,可在其內檢查對象庫中的內容,以獲得有關對象的信息。

對象庫

文件擴展名為 .olb 的文件,向自動化控制項(比如 Visual Basic)提供有關可用對象的信息。可用 對象瀏覽器檢查對象庫的內容,以獲得有關對象的信息。

層疊事件

由事件過程直接或間接調用它自身所引起的一系列事件,也稱為事件的層疊或遞歸。層疊事件過程經常引起運行時錯誤的結果,例如堆棧溢出。