Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VB6表格中获取鼠标位置_Vb6_Mousemove - Fatal编程技术网

在VB6表格中获取鼠标位置

在VB6表格中获取鼠标位置,vb6,mousemove,Vb6,Mousemove,在我正在编写的程序中,我需要鼠标绝对位置在窗体的左上角。 我正在使用以下代码: Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Debug.Print "x: " & X & " - y: " & Y End Sub 使用此代码时,左上角的坐标为0,0。但问题是当我在表单中移动时,值太大了15倍 这就是我为什么使用: Priva

在我正在编写的程序中,我需要鼠标绝对位置在窗体的左上角。 我正在使用以下代码:

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

    Debug.Print "x: " & X & " - y: " & Y

End Sub
使用此代码时,左上角的坐标为0,0。但问题是当我在表单中移动时,值太大了15倍

这就是我为什么使用:

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

    Debug.Print "x: " & X / 15 & " - y: " & Y / 15

End Sub
这给出了正确的坐标,但为什么我需要将其除以15? 我不确定此代码是否与其他系统兼容。

单位为运行时转换系数:screen.twipperpixelx和Y。
您还可以将表单ScaleMode更改为使用像素。

查看文档了解更多信息。返回的X和Y值对应于对象的ScaleHeight、ScaleWidth、ScaleLeft和ScaleTop属性

因此,查看和的文档可以清楚地看出,您可以指定如何确定X和Y坐标。您不仅限于Twips或像素,还可以使用您指定的任何编号系统

这里引用了ScaleHeight,ScaleWidth页面的一段话:

例如,语句ScaleHeight=100更改了 测量窗体的实际内部高度。而不是 高度为n个当前单位twips,像素,…,高度为 100个用户定义的单位。因此,50个单位的距离是距离的一半 对象的高度/宽度以及101个单位的距离将被禁用 该对象由1个单位组成


在这方面,为了确保结果符合预期,您可以准确地告诉表单它包含多少用户定义的单位。

对于我来说,坐标是从左上角算起的像素数。例如,当它给我15000时,我知道它不对,因为它应该是1000。谢谢,我通过将scalemode更改为像素使其工作。+1如果结果与您的预期不同,请查看文档,以查看您的预期是否有误。