Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6 - Hiiren x ja y formin sisältä

Quirzo [04.03.2007 14:10:12]

#

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.

sqwiik [04.03.2007 14:41:06]

#

Vähennä GetPos:n arvoista formin sijainti (Top, Left).

Antti Laaksonen [04.03.2007 14:45:17]

#

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!

Quirzo [05.03.2007 21:34:42]

#

Kiitos paljon, melkein tajusinkin kun tuolla twipsperpixelillä kokeilin.

Palauttaako tuo muuten pikseleinä vai twipeinä? Nimittäin formillani mitat ovat pikseleinä.

Blaze [05.03.2007 22:39:48]

#

GetCursorPos operoi pikseleillä. Formisi sisällä käytettävä mittayksikkö saattaa olla pikselit, mutta formien Left ja Top -arvot ovat aina twippeinä.

Metabolix [05.03.2007 22:56:25]

#

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

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta