在VFP、VB应用程序中激活鼠标功能

2016-02-19 14:55 31 1 收藏

只要你有一台电脑或者手机,都能关注图老师为大家精心推荐的在VFP、VB应用程序中激活鼠标功能,手机电脑控们准备好了吗?一起看过来吧!

【 tulaoshi.com - 编程语言 】

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  (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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  (4)当鼠标从按钮上移开后,提示行文字立即消失.

  双击窗体,进入窗体MOUSEMOVE事件代码窗口:

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

  LABEL1.Visible = False

  End Sub

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  实例二:互换鼠标的左右按钮.

  实现效果:当你的鼠标左键或右键不好时,通过调用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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  LABEL4.Caption = "√"

  End If

  End Sub

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  (4)双击命令按钮1,进入命令按钮单击事件代码窗口:

  Private Sub Command1_Click ()

  Dim SWAP_BUTT As Integer

  SWAP_BUTT = SWAPMOUSEBUTTON(-1) 互换鼠标的左右键

  End Sub

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  (5)双击命令按钮2,进入命令按钮单击事件代码窗口:

  Private Sub Command2_Click ()

  Dim SWAP_BUTT As Integer

  SWAP_BUTT = SWAPMOUSEBUTTON(0) 恢复鼠标的原状态

  End Sub

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  (6)双击命令按钮3,进入命令按钮单击事件代码窗口:

  Private Sub Command4_Click ()

  LABEL3.Caption = " "

  LABEL4.Caption = " "

  End Sub

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  (7)双击退出按钮,进入命令按钮单击事件代码窗口:

  Private Sub Command3_Click ()

  End

  End Sub

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  以上程序在WINDOWS98,VISUAL FOXPRO 6.0,VISUAL BASIC 6.0环境下运行通过.

来源:http://www.tulaoshi.com/n/20160219/1608352.html

延伸阅读
一、WindowsCGI ----通用网关接口CGI是服务器与应用程序之间的接口,在编写HTML文件时可结合其他程序语言使客户通过浏览器将数据输入到文件里,经服务器处理后转送给客户或记录在服务器的数据库中。任何一种程序设计语言写的程序,若可在服务器主机上运行并可用CGI接口来传递数据,就可作为CGI应用程序,这种语言可被称为CGI程序语言或脚本...
标签: Java JAVA基础
Java 平台一直都以其平台无关性自豪。虽然这种无关性有许多好处,但是它也使得编写与硬件交互的 Java 应用程序的过程变得相当复杂。在本文中,研究科学家蒋清野讨论了两个项目,它们通过提供使Java 应用程序可以使用 USB 设备的 API 而使这个过程变得更容易。虽然这两个项目仍然处于萌芽状态,但是它们都显示了良好的前景,并已...
Java 平台一直都以其平台无关性自豪。虽然这种无关性有许多好处,但是它也使得编写与硬件交互的 Java 应用程序的过程变得相当复杂。在本文中,研究科学家蒋清野讨论了两个项目,它们通过提供使Java 应用程序可以使用 USB 设备的 API 而使这个过程变得更轻易。 虽然这两个项目仍然处于萌芽状态,但是它们都显示了良好的前景,并已经成为一些...
  有些时候,我们需要在一个应用程序中打开另外的应用程序,我这几天就做了这样的事,总结了一些东西,希望可以跟大家一起分享和交流一下。其中有可能有一些东西是错误的或者走了弯路,恳请大家能够给我提意见!另外我这些天一直在学习多线程与多进程,期待找到一些共同进步的人!     闲话少说了,还是回答主题上面来。要在应...
标签: vb
1.部件可在需要时加载,不需要时卸载。 2.在Win95或WinNT下,即使应用程序的其他部分为16位部件,跨进程的部件也可以是32位的执行程序。 3.远程部件可使用网络上其他机器的资源。 另外,部件可被单独调试并可在其他应用程序里重用。在确定如何使用分段技术来优化应用程序之前,必须估计到能创建的部件类型和怎样适合应用...

经验教程

584

收藏

80
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部