我至少遇到了按键处理的问题,并且可能事件处理通常尝试在Windows 8.1机器上使用SDL2.0.3实现消息循环,同时在c ++ 11中编程。我在SDL1中没有probs,但现在循环没有按预期运行。
循环代码是
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事件,因此我无法关闭窗口,除非我使用任务管理器来执行此操作。在进入循环时,prog打印 1按下
按下并释放任何键导致 1发布 正在印刷
我从未看到任何按键被按下的通知。
我也正在使用根据lazyfoo教程设置的代码块13.12
我做错了什么,是Windows 8怪癖还是SDL2问题?
PS我意识到你无法看到它,但是对于尚未指向任何东西的指针,使用了nullptr而不是NULL
答案 0 :(得分:0)
问题解决了
上面的代码似乎是对的。但是,SDL2的设置需要我使用
#include <SDL.h>
我的其中一个标题
#include <SDL/SDL.h>
一旦我终于注意到并恢复到第一个,所有都按预期工作。这么简单,很容易错过的东西
抱歉混淆了家伙