获取鼠标在VB6中的位置

时间:2012-11-02 11:16:42

标签: 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倍。

这就是我使用的原因:

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

2 个答案:

答案 0 :(得分:5)

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

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

以下是ScaleHeight,ScaleWidth页面的引用:

  

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

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

答案 1 :(得分:2)

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