VB获取鼠标在当前窗体的坐标
一个Timer控件,根据鼠标在当前窗体的坐标,在一定坐标范围内响应事件获取鼠标在当前窗体的坐标如何写...
一个Timer控件,根据鼠标在当前窗体的坐标,在一定坐标范围内响应事件获取鼠标在当前窗体的坐标如何写
展开
3个回答
展开全部
MouseMove对一些控件无法支持,如WEB控件,鼠标坐标会获取失败,还是API好用一些
(vb.net 2010的代码)代码如下
Private Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As POINTAPI) As Long '全屏坐标声明
Private Declare Function ScreenToClient Lib "user32.dll" (ByVal hwnd As Int32, ByRef lpPoint As POINTAPI) As Int32 '窗口坐标声明
Private Structure POINTAPI '声明坐标变量
Public x As Int32 '声明坐标变量为32位
Public y As Int32 '声明坐标变量为32位
End Structure
'以上是声明部分
'以下是窗口部分
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick '用时钟控件来取坐标,窗口上放个Timer组件,Enabled为允许,周期为10到100毫秒均可
Dim P As POINTAPI '声明坐标变量
Dim xx, yy '声明转换要用到的变量
GetCursorPos(P) '获取鼠标在屏幕中的位置
ScreenToClient(Me.Handle.ToInt32, P) '转换为本窗体的坐标
xx = P.x.ToString '把X转换成能显示到文本框的字符串格式
yy = P.y.ToString '把Y转换成能显示到文本框的字符串格式
TextBox1.Text = xx + "和" + yy '文本框的内容为X坐标和Y坐标
End Sub
VB6代码如下:
Private Type POINT'声明坐标变量类
x As Long '声明坐标变量
y As Long '声明坐标变量
End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINT) As Long'全屏坐标函数声明
Private Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As POINT) As Long'用户窗口坐标函数声明
'以上是声明部分
'以下是窗口部分
Private Sub Timer1_Timer()'用时钟控件来取坐标,窗口上放个Timer组件,Enabled为允许,周期为10到100毫秒均可
Dim P As POINT '声明坐标变量
GetCursorPos P'获取鼠标在屏幕中的位置
ScreenToClient Me.hwnd, P '获取鼠标在窗口中的位置
Text1.Text = xx + "和" + yy '文本框的内容为本窗口X坐标和Y坐标
End Sub
(vb.net 2010的代码)代码如下
Private Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As POINTAPI) As Long '全屏坐标声明
Private Declare Function ScreenToClient Lib "user32.dll" (ByVal hwnd As Int32, ByRef lpPoint As POINTAPI) As Int32 '窗口坐标声明
Private Structure POINTAPI '声明坐标变量
Public x As Int32 '声明坐标变量为32位
Public y As Int32 '声明坐标变量为32位
End Structure
'以上是声明部分
'以下是窗口部分
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick '用时钟控件来取坐标,窗口上放个Timer组件,Enabled为允许,周期为10到100毫秒均可
Dim P As POINTAPI '声明坐标变量
Dim xx, yy '声明转换要用到的变量
GetCursorPos(P) '获取鼠标在屏幕中的位置
ScreenToClient(Me.Handle.ToInt32, P) '转换为本窗体的坐标
xx = P.x.ToString '把X转换成能显示到文本框的字符串格式
yy = P.y.ToString '把Y转换成能显示到文本框的字符串格式
TextBox1.Text = xx + "和" + yy '文本框的内容为X坐标和Y坐标
End Sub
VB6代码如下:
Private Type POINT'声明坐标变量类
x As Long '声明坐标变量
y As Long '声明坐标变量
End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINT) As Long'全屏坐标函数声明
Private Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As POINT) As Long'用户窗口坐标函数声明
'以上是声明部分
'以下是窗口部分
Private Sub Timer1_Timer()'用时钟控件来取坐标,窗口上放个Timer组件,Enabled为允许,周期为10到100毫秒均可
Dim P As POINT '声明坐标变量
GetCursorPos P'获取鼠标在屏幕中的位置
ScreenToClient Me.hwnd, P '获取鼠标在窗口中的位置
Text1.Text = xx + "和" + yy '文本框的内容为本窗口X坐标和Y坐标
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
TextBox1.Text = e.X.ToString
TextBox2.Text = e.Y.ToString
End Sub
TextBox1.Text = e.X.ToString
TextBox2.Text = e.Y.ToString
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-03-15
展开全部
在VB中针对Form、Text文本输入框等都有关于鼠标的三个函数:,_MouseDown、_MouseMove、_MouseUp,如:关于Form有如下三个函数,只要在其中写入针对Timer控件的语句即可,无需理会坐标X、Y的值。 Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询