我正在使用SDL 2.0,并决定尝试制作多个窗口。不幸的是,现在我不能退出我的程序而不回到IDE并强行关闭它。
事件处理尽可能简单,我只是轮询quit事件,并且在添加第二个窗口之前它完全正常。使用多个窗口时是否忽略退出事件?如果是这样,我该如何重新开启?
答案 0 :(得分:5)
退出事件仅在最后一个打开的窗口尝试关闭时发送,否则会发送窗口关闭事件。
答案 1 :(得分:0)
我也遇到了这个问题,文档在这个主题上有点稀疏,所以我在这里结束了。
问题的摘要是:
SDL_QUIT
事件。SDL_WINDOWEVENT
的{{1}}事件。因此,如果您的单窗口退出事件的典型代码可能看起来像这样:
SDL_WINDOWEVENT_CLOSE
多窗口等效项为:
SDL_Event e;
while (SDL_PollEvent(&e))
{
if (e.type == SDL_QUIT)
{
// ... Handle close ...
}
}
请注意,在最后一个窗口上,您将再次收到SDL_Event e;
while (SDL_PollEvent(&e))
{
if (e.type == SDL_WINDOWEVENT
&& e.window.event == SDL_WINDOWEVENT_CLOSE)
{
// ... Handle window close for each window ...
// Note, you can also check e.window.windowID to check which
// of your windows the event came from.
// e.g.:
if (SDL_GetWindowID(myWindowA) == e.window.windowID)
{
// ... close window A ...
}
}
}
,因为它现在是唯一的活动窗口-因此最好根据情况正确地处理这两种代码。
有关更多信息,请参见docs。