鼠標是WINDOWS環境下不可缺少的輸入工具,在應用程序中靈活地使用鼠標功能,會給工作帶來極大的方便.VISUAL FOXPRO6.0和VISUAL BASIC6.0是MICROSOFT VISUAL STUDIO98面向對象的可視化開發環境,它功能非常強大,而且設計程序簡單實用.它提供了與鼠標操作有關的事件和API函數,所以編寫鼠標功能程序就變得非常簡單,只需在程序中調用這些事件和API函數即可.
一.與鼠標有關的事件和WINDOWS API函數:
1.MOUSEDOWN 按下鼠標事件.
當用戶按下鼠標上的任一按鈕時,就會引發該事件.
調用格式:
Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
①BUTTON參數是用來指示鼠標按鈕的狀態.它用二進制來表示.參數值含義如下:
001:左按鈕按下. 010:右按鈕按下.
011:左右按鈕都按下. 000:都沒按下.
100:中間按鈕按下. 111:三個按鈕都按下.
②SHIFT參數用來指示SHIFT,CTRL和ALT三個鍵的狀態.參數值含義如下:
001:SHIFT按下. 010:CTRL按下.
110:CTRL和ALT按下. 011:SHIFT和CTRL按下.
100:ALT按下. 101:SHIFT和ALT按下.
111:SHIFT,CTRL和ALT都按下.
③參數X和Y指示鼠標在對象上按下時的位置.
2.MOUSEUP 釋放鼠標事件.
當用戶松開鼠標按鈕時,就會引發該事件.
調用格式:(參數含義與MOUSEDOWN過程相同.)
Private Sub Form_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
3.MOUSEMOVE 移動鼠標事件.
當用戶將鼠標移到新位置時,就會引發該事件.
調用格式:(參數含義與MOUSEDOWN過程相同.)
Private Sub Form_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single)
4.WINDOWS API的SwapMouseButton()函數對換鼠標的左右鍵.
語法格式:
Private Declare Function SwapMouseButton Lib "USER32" Alias "SwapMouseButtonA" (ByVal BSWAP As Integer) As Integer
參數BSWAP含義:如為TRUE,則左按鈕產生右按鈕的鼠標消息,右按鈕產生左按
鈕的鼠標消息.如為FALSE,則正常解釋鼠標按鈕的輸入.
返回值含義:如為TRUE,說明鼠標的左右按鈕功能已經對調.如為FLASE,說明鼠
標按鈕功能恢復原狀態.
──────────? ───────────────────────────二.VISUAL FOXPRO應用實例:
實例一:利用鼠標事件在窗體上畫圓。當鼠標左鍵按下時可以作圖,而當鼠標左鍵釋放時,則無法作圖;而當鼠標移動時,
則畫出圖來。把鼠標左鍵按下與否作為作圖的開關,鼠標移動就連續畫圖,本例是
連續畫出圓來。
在窗體FORM1建立如下事件:
Form1LPARAMETERS nButton, nShift, nXCoord, nYCoord
Form1.Init事件,建立一個全局變量mark,用於是否畫圖的開關變量,
當mark為真時,可以作圖,否則不能作圖。
public mark
thisform.scalemode=3
thisform.drawwidth=2
Form1.MouseDown事件,將mark設置為真,表示可以畫圖。
LPARAMETERS nButton, nShift, nXCoord, nYCoord
mark=.t.
Form1.MouseUp事件,將mark設置為假,表示不能畫圖。
LPARAMETERS nButton, nShift, nXCoord, nYCoord
mark=.f.
Form1.MouseMove事件,移動鼠標連續畫圓。
LPARAMETERS nButton, nShift, nXCoord, nYCoord
if mark and bittest(nbutton,0)
thisform.circle(20,nxcoord,nycoord)
endi
實例二:利用鼠標事件切換圖標按鈕中的圖標。COMMAND1控件的PICTURE屬性是C:B.BMP
Form1.load事件,定義開關變量mouse_down。
public mouse_down
mouse_down=0
Form1.MouseDown事件,顯示鼠標按下時的圖標。
LPARAMETERS nButton, nShift, nXCoord, nYCoord
THISFORM.COMMAND1.PICTURE="C:A.BMP"
mouse_down=1
Form1.MouseUp 事件,顯示鼠標松開時的圖標。
LPARAMETERS nButton, nShift, nXCoord, nYCoord
THISFORM.COMMAND1.PICTURE="C:B.bmp"
Form1.MouseMove事件,判別鼠標是否離開圖形按鈕,若離開,則顯示松開時的圖標。
LPARAMETERS nButton, nShift, nXCoord, nYCoord
if mouse_down=1