SDL_GetMouseState无法获取初始鼠标位置

时间:2013-07-20 13:40:01

标签: sdl mouse-coordinates sdl-2

有没有办法在 SDL 2.0 中获得鼠标的初始位置?我尝试通过SDL_GetMouseState(&mouse_x,&mouse_y)得到鼠标坐标,但是只有在使用函数SDL_PollEvent()之后我得到了我预期的结果,而且我也看不到{{1}以外的值如果自程序开始以来鼠标至少没有被移动一次。虽然我没有检查 SDL_MOUSEMOTION 并将(0,0)连接到它,但我只得到鼠标坐标鼠标移动了。那有什么不对?或SDL_GetMouseState()是否适合这样做?
编辑:为什么,为什么没有任何答案?

3 个答案:

答案 0 :(得分:3)

尝试在SDL_GetMouseState()之前调用SDL_PumpEvents()。

答案 1 :(得分:2)

SDL在SDL_PrivateSendMouseMotion内部更新鼠标的位置,该文​​件由同一文件中的各种鼠标相关函数调用。

在事件循环处理函数WIN_WindowProc中调用这些函数以响应Windows调度的鼠标事件。

因此,如果您不移动鼠标,则不会调度任何事件,并且SDL不知道鼠标的位置。解决方案是在请求位置之前等待鼠标事件,并找到解决方法直到此事件。

答案 2 :(得分:1)

我知道已经晚了,但我只是想解决我找到的问题。 如果您得到零坐标,请调用 SDL_GetGlobalMouseState(&x, &y),然后通过 window.x 和 window.y 坐标偏移 x 和 y。