在 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;
}