首页 / 软件开发 / VB / 在VFP、VB应用程序中激活鼠标功能
在VFP、VB应用程序中激活鼠标功能2010-01-02蔡可训鼠标是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, nYCoordForm1.Init事件,建立一个全局变量mark,用于是否画图的开关变量,当mark为真时,可以作图,否则不能作图。public markthisform.scalemode=3thisform.drawwidth=2Form1.MouseDown事件,将mark设置为真,表示可以画图。LPARAMETERS nButton, nShift, nXCoord, nYCoordmark=.t.Form1.MouseUp事件,将mark设置为假,表示不能画图。LPARAMETERS nButton, nShift, nXCoord, nYCoordmark=.f.Form1.MouseMove事件,移动鼠标连续画圆。LPARAMETERS nButton, nShift, nXCoord, nYCoordif mark and bittest(nbutton,0)thisform.circle(20,nxcoord,nycoord)endi实例二:利用鼠标事件切换图标按钮中的图标。COMMAND1控件的PICTURE属性是C:B.BMPForm1.load事件,定义开关变量mouse_down。public mouse_downmouse_down=0Form1.MouseDown事件,显示鼠标按下时的图标。LPARAMETERS nButton, nShift, nXCoord, nYCoordTHISFORM.COMMAND1.PICTURE="C:A.BMP"mouse_down=1Form1.MouseUp 事件,显示鼠标松开时的图标。LPARAMETERS nButton, nShift, nXCoord, nYCoordTHISFORM.COMMAND1.PICTURE="C:B.bmp"Form1.MouseMove事件,判别鼠标是否离开图形按钮,若离开,则显示松开时的图标。LPARAMETERS nButton, nShift, nXCoord, nYCoordif mouse_down=1if (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"endiendi