所以我有以下代码来监听keydown事件,然后在收到一个事件后立即退出:
int main(int argc, char** argv) {
SDL_Init(SDL_INIT_VIDEO);
SDL_Surface* screen = SDL_SetVideoMode(640, 480, 32, SDL_DOUBLEBUF);
SDL_Event _event;
while (1) {
while (SDL_PollEvent(&_event)) {
if (_event.type == SDL_KEYDOWN) {
return 0;
}
}
SDL_GL_SwapBuffers();
}
}
当我运行它时,我可以按任意箭头键,字母,数字,F1-F12 ...除了左控制键之外几乎任何键,程序将立即退出。
但是当我按左控制键时,程序不会退出,直到我释放键。
虽然示例没有显示,但在按住左控制时按下另一个键(例如ctrl + s)会导致丢失的控制keydown事件被触发(以及第二个表示's'的事件被压了。)
有没有办法为左控制键禁用这种奇怪的行为?
顺便说一句,这是在Windows上使用mingw。我没有使用任何其他编译器/操作系统测试此行为。
答案 0 :(得分:1)
事实证明,我忘了将sdl.dll放入与我的可执行文件相同的目录中。它正在加载一些恰好在路径环境变量上的其他sdl.dll。我将与我编译的版本(1.2.14)匹配的sdl.dll放入我的应用程序目录中,现在它工作正常。