事件
示例套用於
此事件在移動滑鼠時發生。
語法
Private Sub Form_MouseMove( button As Integer, shift As Integer, x As Single, y As Single)
Private Sub MDIForm_MouseMove( button As Integer, shift As Integer, x As Single, y As Single)
Private Sub object _MouseMove([ index As Integer,] button As Integer, shift As Integer, x As Single, y As 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) 對象庫中所列出的常數,用來定義該參數中的各個位:
常數(按鈕) | 值 | 描述 |
vbLeftButton | 1 | 左按鈕按下。 |
vbRightButton | 2 | 右按鈕按下。 |
vbMiddleButton | 4 | 中間按鈕按下。 |
常數(換擋) | 值 | 描述 |
vbShiftMask | 1 | SHIFT 鍵按下。 |
vbCtrlMask | 2 | CTRL 鍵按下。 |
vbAltMask | 4 | ALT 鍵按下。 |
然後這些常數用作位禁止,對於按鈕的各種組合,無須計算出各個組合的唯一的位欄位值即可進行檢測。
要測試某一條件,首先將各個結果賦給一個臨時整型變數然後再與一個位禁止的 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)提供有關可用對象的信息。可用 對象瀏覽器檢查對象庫的內容,以獲得有關對象的信息。
層疊事件
由事件過程直接或間接調用它自身所引起的一系列事件,也稱為事件的層疊或遞歸。層疊事件過程經常引起運行時錯誤的結果,例如堆疊溢出。