在win8.1上按Sdl2键
sdl2 key press prob on win 8.1
我在使用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>
一旦我终于注意到这一点,并返回到第一个,一切都如预期的那样工作。如此简单却又如此容易被忽略的东西
不好意思,大家搞混了
相关文章:
- 为什么不;名字在地图上是按顺序排列的吗
- 在 wxWidgets 中的 wxTextCtrl 上手动触发 ENTER 键按下事件C++?
- 在另一台 PC 上执行程序时加载 SDL2 共享库时出错
- 在C++中的SDL2窗口上显示.bmp时出现问题
- Firebase C++VS2018 SDL2-在Firebase::app::create(..)上执行异常处理
- MinGW 上的 g++ 在使用 SDL2 时无法保留行号信息
- 确实可以提高directory_iterator在Windows上按字母顺序访问文件和文件夹
- C++代码在 Linux 上按预期工作,但在 Windows 上则不然
- while( scanf( "%d" , &n) ) { ... } 在 Linux 上按 Ctrl+D 时不退出
- C :模拟键,如果在Windows上按下,请将其维护
- 尝试在另一个 SDL2 上显示一个图像没有错误,但不会显示第二个图像
- 我如何确定在键盘上按下哪个键?C
- 如何在C++上按字母顺序排列列表
- 测试是否在 Linux 上按下键而不阻塞
- 如何编写一个C++例程来检查我在键盘上按下了哪个键,以便我可以单独处理每个按键?
- 在 std::set 上按名称查找对象
- Qt:如何访问在主窗口上按id拖动的元素
- 在win8.1上按Sdl2键
- 返回在UIAlertView上按下按钮的结果给c++方法
- 如何在Windows上按句柄重命名文件