Miten saan API:n GetPosilla hiiren koordinaatit formin sisältä, en koko ruudusta.
Eli jos laittaa formin vasempaan yläkulmaan, x ja y ovat 0 vaikka formi olisi keskellä ruutua.
Vähennä GetPos:n arvoista formin sijainti (Top, Left).
Kun olet ensin hakenut hiiren koordinaatit näytöllä, vähennä x:stä ikkunan vasemman reunan x ja y:stä ikkunan yläreunan y.
Dim kohta As POINTAPI Dim x As Long, y As Long ' haetaan hiiren kohta näytöllä GetCursorPos kohta ' lasketaan x ja y ikkunan suhteen x = kohta.x - Me.Left / Screen.TwipsPerPixelX y = kohta.y - Me.Top / Screen.TwipsPerPixelY ' näytetään x ja y Me.Caption = x & " " & y
Muoks. sqwiik ehti ensin!
Kiitos paljon, melkein tajusinkin kun tuolla twipsperpixelillä kokeilin.
Palauttaako tuo muuten pikseleinä vai twipeinä? Nimittäin formillani mitat ovat pikseleinä.
GetCursorPos operoi pikseleillä. Formisi sisällä käytettävä mittayksikkö saattaa olla pikselit, mutta formien Left ja Top -arvot ovat aina twippeinä.
Tuossa on luultavasti se paha puoli, että yleensä ikkunan piste (0, 0) on juuri ikkunan sisäalueen piste, siis reunus ja yläpalkki eivät kuulu mukaan. ScreenToClient-funktiolla saa tehtyä tämän muunnoksen.
Private Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Aihe on jo aika vanha, joten et voi enää vastata siihen.