在 SDL2 window 中处理顶部 'x' 关闭按钮点击
Handling top 'x' close button click in SDL2 window
在 SDL2 程序中 last 现有 window 上按下关闭 ('x') 按钮有很多问题和答案。在这种情况下,SDL_QUIT 事件被触发(参见 https://wiki.libsdl.org/SDL_EventType),您可以通过它处理该事件。但是,如果您打开了 两个或更多 windows,然后按下其中一个的关闭按钮,会触发哪个事件?我找不到任何东西。我曾尝试使用 SDL_WINDOWEVENT_CLOSE 来捕获事件,但这似乎也不起作用。
下面是一个简短的 C++ 代码片段:单击 "X" 按钮将同时关闭打开 windows 和退出应用程序。
switch (m_event.type) {
case SDL_KEYDOWN:
switch (m_event.key.keysym.sym) {
case SDLK_m: // enter menu state
case SDLK_ESCAPE:
machine->popState();
break;
default:
break;
}
break;
case SDL_WINDOWEVENT:
switch (m_event.window.event) {
case SDL_WINDOWEVENT_CLOSE: // exit game
machine->quit();
break;
default:
break;
}
break;
default:
// logFileStderr("TutorialState unknown event...\n");
break;
}
在 SDL2 程序中 last 现有 window 上按下关闭 ('x') 按钮有很多问题和答案。在这种情况下,SDL_QUIT 事件被触发(参见 https://wiki.libsdl.org/SDL_EventType),您可以通过它处理该事件。但是,如果您打开了 两个或更多 windows,然后按下其中一个的关闭按钮,会触发哪个事件?我找不到任何东西。我曾尝试使用 SDL_WINDOWEVENT_CLOSE 来捕获事件,但这似乎也不起作用。
下面是一个简短的 C++ 代码片段:单击 "X" 按钮将同时关闭打开 windows 和退出应用程序。
switch (m_event.type) {
case SDL_KEYDOWN:
switch (m_event.key.keysym.sym) {
case SDLK_m: // enter menu state
case SDLK_ESCAPE:
machine->popState();
break;
default:
break;
}
break;
case SDL_WINDOWEVENT:
switch (m_event.window.event) {
case SDL_WINDOWEVENT_CLOSE: // exit game
machine->quit();
break;
default:
break;
}
break;
default:
// logFileStderr("TutorialState unknown event...\n");
break;
}