2012-11-02 2 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 좌표. 그러나 문제는 양식 내부를 이동할 때 값이 너무 크다는 것입니다.

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이으로 나눔해야합니까 : 내가 사용하는 이유

는 그래서인가? 이 코드가 다른 시스템과 호환되는지 여부는 확실하지 않습니다.

+0

나를 위해, 좌표는 왼쪽 상단 모서리에서 픽셀의 양입니다. 예를 들어 15000을 주었을 때 1000이되어야하기 때문에 그것이 옳지 않다는 것을 알고 있습니다. – OsiriX

답변

4

MouseMove에 대한 문서를 살펴보십시오. 반환 된 X 및 Y 값은 "ScaleHeight, ScaleWidth, ScaleLeft 및 ScaleTop 속성 개체에 해당합니다."

따라서 ScaleHeight, ScaleWidthScaleLeft, ScaleTop에 대한 설명서를 보면 X 및 Y 좌표가 결정되는 방법을 지정할 수 있다는 것은 분명합니다. Twips 또는 Pixel에 국한되지 않고 지시하는 번호 체계를 사용할 수 있습니다.

예를 들어, 문 ScaleHeight = 100 양식의 실제 내부 높이의 측정 단위를 변경합니다

다음은 ScaleHeight에서 인용 ScaleWidth 페이지입니다. 높이가 n 현재 단위 (트윕, 픽셀, ...) 대신 높이가 100 개의 사용자 정의 단위가됩니다. 따라서 50 단위의 거리는 객체의 높이/너비의 절반 인 이고, 101 단위 거리는 객체를 1 단위로 해제합니다.

결과가 예상과 일치하는지 확인하기 위해 양식에 정확히 얼마나 많은 사용자 정의 단위가 있는지 양식에 알릴 수 있습니다.

+0

고마워요, 저는 픽셀로 스케일 모드를 변경하여 작동 시켰습니다. – OsiriX

+0

+1 결과가 예상과 다를 경우 설명서를 참조하여 기대치가 잘못되었는지 확인하십시오. – MarkJ

2

단위는 Twips (런타임 환산 계수 : screen.TwipsPerPixelXY)입니다. ScaleMode 양식을 Pixel 초로 변경할 수도 있습니다.