2012-11-02 81 views
0

在我正在編寫的程序中,我需要鼠標絕對位置到窗體的左上角。 我使用這個代碼:當我使用此代碼獲取鼠標在窗體VB6中的位置

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到devide呢? 我不確定此代碼是否在其他系統上兼容。

+0

對我來說,座標是左上角的像素數量。例如,當它給我15000例如,我知道這是不正確的,因爲它應該是1000. – OsiriX

回答

4

查看MouseMove的文檔。返回的X和Y值對應於對象的「ScaleHeight,ScaleWidth,ScaleLeft和ScaleTop屬性」。

因此,查看ScaleHeight, ScaleWidthScaleLeft, ScaleTop的文檔,顯然您可以決定如何確定X和Y座標。你不限於緹或像素,但可以使用你指定的任何編號系統。

下面是來自ScaleHeight報價,ScaleWidth頁:

例如,語句ScaleHeight = 100改變 措施形式的實際內部高度的單位。高度爲n個當前單位(緹,像素,...),高度將爲100個用戶定義單位。因此,50個單位的距離是對象的高度/寬度的一半,並且距離爲101個單位的對象將以1個單位關閉。

在這一點上,以確保您的結果與你的期望,你可以告訴的形式,它到底有多少用戶定義的單位包含的內容。

+0

謝謝,我通過將scalemode更改爲像素來工作。 – OsiriX

+0

+1如果結果與預期不符,請檢查文檔以查看您的期望是否有錯。 – MarkJ

2

單位在Twips(運行時轉換系數:screen.TwipsPerPixelXY)。 您也可以更改表格ScaleMode以使用Pixel s。