在win8.1上按Sdl2键

sdl2 key press prob on win 8.1

本文关键字:Sdl2 上按 win8      更新时间:2023-10-16

我在使用c++11编程时,在windows 8.1机器上尝试使用SDL2.0.3实现消息循环时,至少遇到了按键处理和事件处理的问题。我在SDL1中没有问题,但现在循环没有按预期运行。

循环代码是
bool        running = true;
Uint8       eventstate;
SDL_Event   event;
void msg::loop() {
    //eventstate = SDL_EventState(SDL_QUIT, SDL_ENABLE);
    //myStream << "Entering message loop" << endl;
    while(running) {
        while(SDL_PollEvent(&event) > 0) {
            if(event.type == SDL_QUIT) {
                running = false;
            }
            if(event.type == SDL_KEYDOWN) {
            cout << event.key.keysym.sym << " pressed" << endl;
            }
            if(event.type == SDL_KEYUP) {
                cout << event.key.keysym.sym << " released" << endl;
            }
         }
    }
//myStream << "Exiting message loop" << endl;
}

我的问题是,它似乎没有看到SDL_QUIT事件,所以我不能关闭一个窗口,除非我使用任务管理器来做它。在进入循环时,程序也会打印1按下

按下并释放任何键将导致1发布印发

我从来没有看到任何按键被按下的通知。

我也使用代码块13.12设置按照lazyfoo教程

我做错了什么,是一个windows 8怪癖,还是一个SDL2问题?

PS我知道你看不出来但是nullptr是用来代替NULL的指针还没有指向任何东西

问题解决

上面的代码是/似乎是正确的。然而,SDL2的设置要求我使用

#include <SDL.h>

和我的一个头文件

#include <SDL/SDL.h>

一旦我终于注意到这一点,并返回到第一个,一切都如预期的那样工作。如此简单却又如此容易被忽略的东西

不好意思,大家搞混了