VB 如果在窗体范围内获取鼠标的X轴和Y轴,而不被窗体中的控件所影响?
鼠标移动到一个控件上时,窗体的MouseMove事件的X和Y的值就没有了,如何让鼠标透过对象,仍然获取MouseMove的X和Y值要在窗体范围内的,就是鼠标移动到窗体的左...
鼠标移动到一个控件上时,窗体的MouseMove事件的X和Y的值就没有了,如何让鼠标透过对象,仍然获取MouseMove的X和Y值
要在窗体范围内的,就是鼠标移动到窗体的左上角,X和Y的值为 (0,0)
谢谢~~~~~~~~~ 展开
要在窗体范围内的,就是鼠标移动到窗体的左上角,X和Y的值为 (0,0)
谢谢~~~~~~~~~ 展开
展开全部
楼上回答的不完全正确【顺便解读下楼上代码】:
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
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
展开全部
使用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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询