3 Stimmen

SDL_GetMouseState funktioniert nicht, um die Position der Maus zu erhalten

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?

2voto

vladimirm Punkte 263

Versuchen Sie, SDL_PumpEvents() aufzurufen, bevor Sie SDL_GetMouseState() aufrufen.

2voto

Julien Punkte 2090

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.

0voto

Dave Brown Punkte 1

Ich weiß, es ist spät, aber ich möchte noch eine Lösung mitteilen, die ich gefunden habe. Wenn du null Koordinaten bekommst, rufe SDL_GetGlobalMouseState(&x, &y) auf und verschiebe dann x und y um die Fensterkoordinaten von window.x und window.y.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X