|
| Autor |
Nachricht |
socomjoy Newbie

Anmeldedatum: 08.12.2009 Beiträge: 2
|
Mauszeiger positionieren (in einem Spiel)
Verfasst am: 20.07.2011, 12:53 |
|
|
Hallo liebe Leute vom visual-basic-forum.de,
wie im Titel kurz erwähnt geht es darum den Cursor neu zu positionieren - jedoch nicht an einer festen Stelle (x, y) bzw. (600, 670), sondern am liebsten auf die Position, an der ein bestimmtes Label befindlich ist.
Mein Vorhaben:Ich progge ein kleines Spielchen, welches im großen und ganzen auf MouseOver basiert.
Ziel ist es mit der Maus bzw. mit dem Cursor von einem Anfangslabel (lblStart) über weitere Labels (lbl1, lbl2, ...) zum Ziel (lblStop) zu gelangen, ohne dabei von einem der genannten Labels "abzurutschen" - rutscht man ab, so entlädt sich die Form (unload) und lädt sich neu.
Funktioniert auch soweit, bloß ist dies natürlich nicht elegant gelöst: Schöner fände ich es, wenn der Cursor abrutscht, also im Spiel verliert, dieser zurück zur Anfangsposition gesetzt wird (also zu lblStart).
Nun kann man zwar stumpf hingehen und im Script programmieren, dass im Falle des Verlierens der Cursor auf (x, y) (wobei x und y die Positionen sind, an denen sich lblStart befindet) gesetzt wird. Doch spielt man dieses Spiel auf einem anderen PC mit anderer Auflösung, wird Position (x, y) dann bei demjenigen natürlich ein ganz anderer Bereich sein und eben nicht der Bereich von lblStart - oder?!
Deshalb mein Lösungsansatz:Im Falle des Verlierens soll überprüft werden, wo lblStart sich befindet (ist ja von Level zu Level und vor allem PC zu PC unterschiedlich) und genau dahin soll dann auch der Cursor platziert werden.
Ansonsten:Ist all dies so realisierbar? Was wird alles benötigt? Kann man besser anders vorgehen/denke ich zu kompliziert? Anregungen? Ideen? Kritik? ...? - Raus damit!
Vielen Dank schon jetzt und mit freundlichen Grüßen,
socomjoy |
|
| |
|
 |
christopher.g Überflieger

Anmeldedatum: 03.05.2008 Beiträge: 565
|
Verfasst am: 20.07.2011, 14:19 |
|
|
hi
ja kein problem...
| Code: |
Private Declare Function SetCursorPos Lib "user32.dll" _
(ByVal x As Long, ByVal y As Long) As Long
Private Sub SetCur2Lbl()
Dim xTop As Long
Dim xLeft As Long
With lblStart
xTop = Me.Top + .Top + (.Height / 2)
xLeft = Me.Left + .Left + (.Width / 2)
xTop = xTop / Screen.TwipsPerPixelX
xLeft = xLeft / Screen.TwipsPerPixelY
SetCursorPos xLeft, xTop
End With
End Sub
|
ich hab den code nicht getestet sondern nur aus gedanken geschrieben da ich jetzt grade kein vb da hab
aber er sollte so funktionieren
lg |
|
| |
|
 |
|
|