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.