3
然而,我打电话SDL_PeepEvents(sdlevent, EVENT_BUFFER_SIZE, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_SYSWMEVENT);
然而,在运行时间几秒钟后,并且调整窗口大小(调整大小/移动/最小化)时,它将不会在单击关闭窗口时拾取事件。SDL_PeepEvents不会处理窗口关闭
void Window::pollWindowEvents()
{
const int EVENT_BUFFER_SIZE = 16;
SDL_Event sdlevent[ EVENT_BUFFER_SIZE ]; //The SDL event that we will poll to get events.
SDL_PumpEvents();
int numEvents = SDL_PeepEvents(sdlevent, EVENT_BUFFER_SIZE, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_SYSWMEVENT);
std::cout << numEvents << std::endl;
for (int i = 0; i < numEvents; ++i)
{
switch (sdlevent[ i ].type)
{
case SDL_QUIT:
closed = true;
std::cout << sdlevent[ i ].type << std::endl;
break;
default:
std::cout << sdlevent[ i ].type << std::endl;
break;
};
}
}
有没有人知道我在做什么错了?
您每帧只能处理最多16个事件。队列中还有很多事件,需要一些时间以这种速度处理它们。你为什么不使用'SDL_PollEvent'? – 2012-07-28 08:01:29
我没有使用'SDL_PollEvent',因为我想单独处理键盘事件。我一直有意将解决方案发布几天,但似乎事件队列正在满足我实际没有处理的事件。一旦我开始处理它们,我发现它工作正常。然而,我最终处理它们的方式将允许我使用'SDL_PollEvent',现在已经提到我可能会这样做。 – ctor 2012-07-28 11:54:41