VB 如果在窗体范围内获取鼠标的X轴和Y轴,而不被窗体中的控件所影响?

鼠标移动到一个控件上时,窗体的MouseMove事件的X和Y的值就没有了,如何让鼠标透过对象,仍然获取MouseMove的X和Y值要在窗体范围内的,就是鼠标移动到窗体的左... 鼠标移动到一个控件上时,窗体的MouseMove事件的X和Y的值就没有了,如何让鼠标透过对象,仍然获取MouseMove的X和Y值
要在窗体范围内的,就是鼠标移动到窗体的左上角,X和Y的值为 (0,0)
谢谢~~~~~~~~~
展开
 我来答
百度网友ba88284
2011-07-22 · TA获得超过1521个赞
知道大有可为答主
回答量:1822
采纳率:73%
帮助的人:583万
展开全部
楼上回答的不完全正确【顺便解读下楼上代码】:

Private Type POINTAPI '自定义一个类型,它等效于我们常用的Integer,String等变量类型
x As Long '类型成员
y As Long '类型成员
End Type '结束自定义类型
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
'↑声明API函数
Dim position As POINTAPI '它等效于Dim xx As Integer。这里POINTAPI与Integer都是数据类型
Private Sub Form_Load()
Timer1.Interval = 1 '时间间隔为1毫秒,间隔1毫秒激活过程,建议设置为20毫秒
End Sub

Private Sub Timer1_Timer() ‘【原回答者】
GetCursorPos position '调用API函数,将我们定义的p变量的地址传给系统函数,系统将
Text1 = p.x - Me.Left '得到的位置(x,y)赋给p.x和p.y两个元素。
Text2 = p.y - Me.Top '不过我提出一项修改,你看看哈!我觉得非常有必要
End Sub

我的Timer事件
Private Sub Timer1_Timer() '【By sunruisunrui】
GetCursorPos position
Text1 = p.x - int(Me.Left/15)
Text2 = p.y - int(Me.Top/15)
End Sub
tanarri
2011-07-22 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5123
采纳率:33%
帮助的人:8184万
展开全部
使用GetCursorPos函数得到鼠标在屏幕上的x,y值,然后再根据窗体位置进行修正

Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Dim position As POINTAPI
Private Sub Form_Load()
Timer1.Interval = 1
End Sub

Private Sub Timer1_Timer()
GetCursorPos position
Text1 = p.x - Me.Left
Text2 = p.y - Me.Top
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式