SDL2具有处理窗口事件的结构,例如移动窗口或调整窗口大小。
此结构SDL_WindowEvent
非常有用,因为窗口的窗口事件循环会阻止在移动窗口或调整窗口大小时创建窗口的执行线程。许多SDL2应用程序开发人员发现此类行为不受欢迎,因此他们使用SDL_WindowEvent
SDL_WindowEventID
或SDL_WINDOW_MOVED
的{{1}}轮询SDL2以处理线程块。例如,由于用户移动窗口,具有可变时间步长的物理引擎可能会收到几秒钟的SDL_WINDOW_RESIZED
,并且引擎可能希望丢弃此时间以避免物理错误。
但是,根据我的经验,dt
无法识别窗口的标题栏何时被抓住"通过鼠标但不移动,或者当窗口的调整大小手柄被抓住时#34;但窗口大小不会改变。在这些情况下,Windows会阻止拥有该窗口的执行线程,但任何SDL_WindowEvent
中都不存在SDL_WINDOW_MOVED
和SDL_WINDOW_RESIZED
。
在给出的示例情况中,这两种情况没有区别,因为物理引擎只会丢弃SDL_WindowEvent
或将其钳制,但这种解决方法并非总是可行。
有没有办法检测这些窗口移动或调整大小事件但不影响窗口位置或大小的情况?