0

在我正在编写的程序中,我需要鼠标的绝对位置在表单的左上角。我正在使用这段代码:

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?我不确定此代码是否在其他系统上兼容。

4

2 回答 2

5

查看MouseMove的文档。返回的 X 和 Y 值对应于“对象的 ScaleHeight、ScaleWidth、ScaleLeft 和 ScaleTop 属性”。

因此,查看ScaleHeight、ScaleWidthScaleLeft、ScaleTop的文档,很明显您可以指定如何确定 X 和 Y 坐标。您不仅限于 Twips 或 Pixels,还可以使用您指定的任何编号系统。

这是 ScaleHeight, ScaleWidth 页面的引述:

例如,语句 ScaleHeight = 100 更改了窗体实际内部高度的测量单位。高度不是 n 个当前单位(缇、像素、...),而是 100 个用户定义的单位。因此,50 个单位的距离是对象高度/宽度的一半,101 个单位的距离将离开对象 1 个单位。

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

于 2012-11-02T11:40:56.477 回答
2

单位为Twips(运行时转换因子:screen.TwipsPerPixelXY)。您还可以更改表单ScaleMode以使用Pixels。

于 2012-11-02T11:37:57.640 回答