用VB6.0编程捕获鼠标移动得距离。
用Microsoft Visual Basic v6.0编程,捕获鼠标移动得距离。
比如:鼠标移动到一个位置,我把鼠标得坐标清零,然后我移动鼠标1米(超出了屏幕),那么我能通过计算而知道鼠标是移动了1米吗?
答案或建议:
在窗体中放上两个Command,一个Label和一个Timer。Command1的Caption为“开始测
定”,Command2的Caption为“退出
写入以下代码:
Private Declare Function GetCursorPos Lib "user32" (lpPoint As pointapi) As
Long
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long,
ByVal nIndex As Long) As Long
Private Type pointapi '定义GetCursorPos中的参数
x As Long
y As Long
End Type
'声名变量:
Dim Z As pointapi
Dim L, S, TOTAL
Public A, B, K, H
'
Private Sub Command1_Click()
GetCursorPos Z '得到初始鼠标位置
A = Z.x: B = Z.y
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Form_Load()
H = GetDeviceCaps&(hdc, 8) '得到屏幕水平分辨率(单位为象素)
K = Screen.Width '得到屏幕宽度(单位为twip)
Timer1.Interval = 10 '数值约小,测得的结果约精确
Timer1.Enabled = False
S = 0
End Sub
Private Sub Timer1_Timer()
GetCursorPos Z
L = Sqr((Z.x - A) ^ 2 + (Z.y - B) ^ 2) '每次循环得到鼠标移动距离(单位为象
素),方法有些象微分
S = S + L '得到总的路程(单位为象素)
TOTAL = Int(S * K / H * 2.54 / 1400 / 100 * 100) / 100 '将S单位由象素划为
米,取到小数点后两位。1缇=2.540/1400/100米。
Label1.Caption = TOTAL
A = Z.x: B = Z.y '用新位置的坐标替换原来的坐标
End Sub
文章转载请保留:http://www.baikewenda.com/tech/dev/6/9/a2085623.htm
其它内容:
→ 对方发了数次邮件都已成功发出,我为什么仍然收不到?
→ 怎么将文档在另外一台电脑中打印出来?
→ “我的文档”跑到“我的电脑”里,怎么也删除不掉
→ 什么叫博克?
→ 怎样发短信让对方不见我的号码
→ 怎样调出CAD里的快捷工具栏
→ 为什么我的卡巴斯基(Kaspersky)的KEY不能用?
→ 我玩QQ音速时死机了怎么?
→ U盘和手机内存卡做成启动盘后如何恢复原样
→ 单反相机使用兼容锂电池对机器有没有损伤?
→ win7能否远程桌面访问无显卡的服务器
→ SnagIt添加的文字怎么显示不清楚?
→ lotus notes 7.0备份邮件出现错误58的解决方法
→ Excel 如何将一列数据中重复数据的去除
→ windows xp硬盘启动顺序变更的问题
→ 桌面的IE图标被挂广告网站如何修复?
→ 怎么将文档在另外一台电脑中打印出来?
→ “我的文档”跑到“我的电脑”里,怎么也删除不掉
→ 什么叫博克?
→ 怎样发短信让对方不见我的号码
→ 怎样调出CAD里的快捷工具栏
→ 为什么我的卡巴斯基(Kaspersky)的KEY不能用?
→ 我玩QQ音速时死机了怎么?
→ U盘和手机内存卡做成启动盘后如何恢复原样
→ 单反相机使用兼容锂电池对机器有没有损伤?
→ win7能否远程桌面访问无显卡的服务器
→ SnagIt添加的文字怎么显示不清楚?
→ lotus notes 7.0备份邮件出现错误58的解决方法
→ Excel 如何将一列数据中重复数据的去除
→ windows xp硬盘启动顺序变更的问题
→ 桌面的IE图标被挂广告网站如何修复?