处理顶部'x'关闭按钮单击SDL2窗口

时间:2018-04-06 06:43:04

标签: events sdl-2

在SDL2程序中按最后现有窗口上的关闭('x')按钮有很多问题和答案。在这种情况下,SDL_QUIT事件被触发(参见https://wiki.libsdl.org/SDL_EventType),您可以通过它来处理事件。但是,如果您打开两个或更多个窗口,并按其中一个窗口上的关闭按钮,会触发哪个事件?我找不到任何关于此事的内容。我已经尝试使用SDL_WINDOWEVENT_CLOSE来捕获事件,但这似乎也不起作用。

1 个答案:

答案 0 :(得分:0)

下面是一个简短的C ++代码片段:单击“ X”按钮将关闭两个打开的窗口并退出应用程序。

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