3

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

4

3 回答 3

2

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

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

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

于 2013-09-02T13:40:01.823 回答
2

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

于 2013-07-22T16:39:09.913 回答
1

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

于 2021-07-11T15:36:42.653 回答