在表格VB6中获取鼠标的位置

Osi*_*riX 0 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
Run Code Online (Sandbox Code Playgroud)

当我使用此代码时,左上角的坐标为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
Run Code Online (Sandbox Code Playgroud)

这样可以给出正确的坐标,但是为什么我需要将其乘以15?我不确定该代码是否在其他系统上兼容。

Dan*_*iel 5

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

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

这是ScaleHeight,ScaleWidth页面的引用:

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

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