程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB6 >> 在VFP、VB應用程序中激活鼠標功能

在VFP、VB應用程序中激活鼠標功能

編輯:VB6

鼠標是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

if (nXCoord$#@60;0.or. nXCoord$#@62;thisform.command1.width) .or. (nYCoord$#@60;0 .or. nYCoord$#@62;thisform.command1.height)

THISFORM.COMMAND1.PICTURE="C:\B.BMP"

endi

endi

三.VISUAL BASIC應用實例:

實例一:給應用程序的命令按鈕加上提示行.

實現效果:用過WINDOWS OFFICE軟件的用戶,都非常熟悉這種情況,當你自己不

清楚軟件中所列出的圖標按鈕起什麼作用時, 可以把鼠標移到這個

圖標按鈕上,不一會兒在這圖標按鈕的下方會顯示一個簡短的文字提

示行,說明這個圖標按鈕的作用;當把鼠標從這個按鈕上移開後,提示

行立刻消失.

實現方法:

(1)建立含有如下控件的窗體:

控件 NAME CAPTION VISIBLE

窗體 BOTTON_DEMO 實例一:給應用程序的命令按鈕加上提示行程序窗口

命令按鈕 COMMAND1 TRUE

標簽 LABEL1 FALSE 顯示圖標按鈕作用的文字

(2)雙擊窗體,進入窗體裝入事件代碼窗口:

Private Sub Form_Load ( )

COMMAND1.Picture = LoadPicture("C:\README.ICO") 裝入圖片

End Sub

(3)當鼠標移到按鈕上方時,激活標簽顯示該圖標按鈕作用的文字.

雙擊圖標按鈕,進入命令按鈕MOUSEMOVE事件代碼窗口:

Private Sub Command1_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single)

LABEL1.BorderStyle = 1

LABEL1.BACKCOLOR =&H0000FFFF& 顯示文字的標簽框底色為黃色

LABEL1.Visible = True

LABEL1.CAPTION = "演 示"

End Sub

(4)當鼠標從按鈕上移開後,提示行文字立即消失.

雙擊窗體,進入窗體MOUSEMOVE事件代碼窗口:

Private Sub Form_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single)

LABEL1.Visible = False

End Sub

實例二:互換鼠標的左右按鈕.

實現效果:當你的鼠標左鍵或右鍵不好時,通過調用WINDOWS API的SwapMouseButton()

函數,實現鼠標的左右鍵互換.

實現方法:

(1)建立含有如下控件的窗體:

控件 NAME CAPTION 窗體 SWAP_BUTT 實例二:鼠標的左右按鈕互換 程序窗口 命令按鈕 COMMAND1 鼠標的左右鍵互換 命令按鈕 COMMAND2 恢復原狀態 命令按鈕 COMMAND3 退出 命令按鈕 COMMAND4 清除標志 標簽 LABEL1 按下左按鈕:( ) 標簽 LABEL2 按下右按鈕:( ) 標簽 LABEL3 空 顯示按下標志 標簽 LABEL4 空

(2)在目標文件列表(OBJECT)中選擇GENERAL,在過程列表(PROC)中選擇DECLARATIONS

(聲明),系統進入窗體級代碼的定義窗口中.輸入如下定義:

Private Declare Function SwapMouseButton Lib "USER32" Alias "SwapMouseButtonA" (ByVal BSWAP As Integer) As Integer

(3)雙擊窗體,進入MOUSEUP事件代碼窗口:

Private Sub Form_MouseUp (BUTTON As Integer, Shift As Integer, X As Single, Y As Single)

If BUTTON And &H111 Then

LABEL3.Caption = "√"

Else

LABEL4.Caption = "√"

End If

End Sub

(4)雙擊命令按鈕1,進入命令按鈕單擊事件代碼窗口:

Private Sub Command1_Click ()

Dim SWAP_BUTT As Integer

SWAP_BUTT = SWAPMOUSEBUTTON(-1) 互換鼠標的左右鍵

End Sub

(5)雙擊命令按鈕2,進入命令按鈕單擊事件代碼窗口:

Private Sub Command2_Click ()

Dim SWAP_BUTT As Integer

SWAP_BUTT = SWAPMOUSEBUTTON(0) 恢復鼠標的原狀態

End Sub

(6)雙擊命令按鈕3,進入命令按鈕單擊事件代碼窗口:

Private Sub Command4_Click ()

LABEL3.Caption = " "

LABEL4.Caption = " "

End Sub

(7)雙擊退出按鈕,進入命令按鈕單擊事件代碼窗口:

Private Sub Command3_Click ()

End

End Sub

以上程序在WINDOWS98,VISUAL FOXPRO 6.0,VISUAL BASIC 6.0環境下運行通過.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved