当用户使用SDL按下“X”按钮时关闭程序

时间:2012-02-04 11:22:02

标签: c++ events sdl

我试图在用户按下“X”按钮时关闭程序,使用

工作正常
SDL_Event Events;

while (Run)
{
    while (SDL_PollEvent(&Events))
    {
        if (Events.type == SDL_QUIT)
            Run = false;
    }
    // draw pretty pictures to the window :3
}

在main函数中,但是当我把我的主循环放在一个不与main函数相同的文件中的类时,它仍然会绘制漂亮的图片,但它没有响应按下'X'按钮,我也有尝试在我的main.cpp中声明一个sdl_event,我的main函数位于该函数所在的位置并传递给了类,但是它也没有用。

1 个答案:

答案 0 :(得分:0)

嗯,我必须同意sftrabbit,你应该展示一些不起作用的代码,而不是那些代码。但是,我会根据给出的信息将其甩掉。尝试这样的事情:

#include <SDL/SDL.h>

class SystemManager {
    public:
        // Here we will just have a couple public members for example purposes.
        bool running;
        SDL_Event events;
        void inputManager(); // Handle input.
        void renderingManager(); // Handle drawing pretty pictures.
};

void SystemManager::inputManager() {
    while(SDL_PollEvent(&events)) {
        if(events.type == SDL_QUIT)
            running = false;
    }
}

void SystemManager::renderingManager() {
    // Draw pretty pictures...
}

int main(int argc, char* argv[]) {
    SDL_Init(SDL_INIT_EVERYTHING);
    // Make your screen here...
    SystemManager sysMgr;
    sysMgr.running = true;
    // Game Loop:
    while(sysMgr.running) {
        sysMgr.inputManager();
        sysMgr.renderingManager();
    }
    // Don't forget to quit SDL:
    SDL_Quit();
    return 0;
}

编辑:我应该解释一下。基本上,这通过使用一个处理渲染和输入的对象以及控制运行变量的(关键部分)来工作。我为什么你的工作没有成功的假设是你的主函数中有一个bool运行变量,你的类无法访问它。