Gibt es eine Möglichkeit, die Startposition der Maus in SDL 2.0 zu erhalten?
Ich versuche, die Mauskoordinaten mit SDL_GetMouseState(&mouse_x, &mouse_y)
zu erhalten, jedoch bekomme ich das erwartete Ergebnis nur nach Verwendung der Funktion SDL_PollEvent()
und außerdem sehe ich keinen anderen Wert als (0,0)
, wenn die Maus seit Beginn des Programms nicht mindestens einmal bewegt wurde. Obwohl ich SDL_MOUSEMOTION nicht überprüfe und SDL_GetMouseState()
damit verbinde, erhalte ich nur Mauskoordinaten, wenn die Maus bewegt wird. Was ist also falsch? Oder ist SDL_GetMouseState()
dafür geeignet?
Bearbeiten: Warum, warum gibt es keine Antwort?
Antworten
Zu viele Anzeigen?Die SDL aktualisiert die Position der Maus intern in SDL_PrivateSendMouseMotion, die von verschiedenen mausbezogenen Funktionen in derselben Datei aufgerufen wird.
Diese Funktionen werden in der Ereignisschleifenverarbeitungsfunktion WIN_WindowProc aufgerufen, um auf die von Windows verschickten Mausereignisse zu reagieren.
Daher, wenn Sie die Maus nicht bewegen, wird kein Ereignis verschickt und die SDL weiß nicht, wo sich die Maus befindet. Die Lösung besteht darin, auf ein Mausereignis zu warten, bevor die Position angefordert wird, und eine Umgehungslösung zu finden, bis dieses Ereignis eintritt.