SDL_GetMouseState не работает, чтобы получить начальную позицию мыши

Есть ли способ получить начальную позицию мыши в SDL 2.0?
Я пытаюсь получить координаты мыши SDL_GetMouseState(&mouse_x,&mouse_y) Однако я получаю ожидаемый результат только после использования функции SDL_PollEvent() а также я не вижу значения, кроме (0,0) если мышь не была перемещена хотя бы один раз с начала работы программы. Хотя я не проверяю SDL_MOUSEMOTION и подключаюсь SDL_GetMouseState() к нему, я получаю координаты мыши только когда мышь перемещена. Так что не так? Или SDL_GetMouseState() подходит для этого?
Изменить: Почему, почему нет никакого ответа?

3 ответа

Попробуйте вызвать SDL_PumpEvents() перед SDL_GetMouseState().

SDL обновляет положение мыши внутри SDL_PrivateSendMouseMotion, которая вызывается различными связанными с мышью функциями в одном и том же файле.

Эти функции вызываются в функции обработки цикла событий WIN_WindowProc в ответ на события мыши, отправляемые Windows.

Таким образом, если вы не двигаете мышь, событие не отправляется, и SDL не знает, где находится мышь. Решение состоит в том, чтобы дождаться события мыши, прежде чем запрашивать позицию, и найти обходной путь до этого события.

Я знаю, что уже поздно, но просто подключаюсь к найденному мной разрешению. Если вы получаете нулевые координаты, вызовите SDL_GetGlobalMouseState(&x, &y), затем сместите x и y на координаты window.x и window.y.

Другие вопросы по тегам