C++ 为什么要调用窗口移动事件?

C++ 为什么要调用窗口移动事件?,c++,ubuntu,sdl-2,C++,Ubuntu,Sdl 2,窗口移动事件在不移动窗口的情况下触发,导致程序冻结 在我的SDL程序中,它有一个随机的机会在加载后冻结。使用调试器,我找到了导致它的原因: 1.我的主循环读取SDL事件,直到不再有: while (SDL_PollEvent(&e)) 二,。根据调试器,我不断获得具有相同值的窗口事件: 类型:512 windowEvent windowID:2 事件:4我查了一下,这是窗口移动事件 填充1,填充2,填充3:0 数据1:756 数据2:743 是什么导致这些事件突然出现?当这些弹出窗口时

窗口移动事件在不移动窗口的情况下触发,导致程序冻结

在我的SDL程序中,它有一个随机的机会在加载后冻结。使用调试器,我找到了导致它的原因: 1.我的主循环读取SDL事件,直到不再有:

while (SDL_PollEvent(&e))
二,。根据调试器,我不断获得具有相同值的窗口事件:

类型:512 windowEvent windowID:2 事件:4我查了一下,这是窗口移动事件 填充1,填充2,填充3:0 数据1:756 数据2:743
是什么导致这些事件突然出现?当这些弹出窗口时,窗口根本不会移动。

我已经多年没有发送原始Windows消息了,但这可能是您在启动时经常收到的消息之一,用于向您提供信息,例如新窗口的大小或位置或最大化状态。这真的是一个问题吗?你能忽略它们,甚至处理它们吗?Windows常量WM_MOVE是3而不是4,所以我假设这是一个SDL常量?是的,它是一个SDL常量。SDL_WindowEvent与SDL_事件一起收集事件时,应将其从事件队列中删除。问题是它一次又一次地出现,所以我的程序在读取所有事件时被锁定。我不知道,对不起。我建议您获取SDL源代码并调试到其中,以确定它是自己生成的还是由窗口系统生成的抱歉,我错过了Ubuntu标记。没关系。我会再调查一些。