整体程序过于复杂,无法在此展示。基本上,只需注意 green highlights in my recent git commit .我是 DirectInput 的新手,所以我预计我犯了几个错误。我已经非常仔细地研究了 MSDN 文档,所以我保证我不会把它丢在那里并在上面标记 FIX IT FOR ME。 :)
基本上,我想我已经将我的问题缩小到 Engine::getEvent 周围的代码区域(第 238+ 行)。我不明白这些功能是如何工作的,我搞砸了某些部分以获得不同的结果。我的目标是直接读取键盘事件并将这些原始数字输出到屏幕(稍后我将处理数字的含义)。这里的问题与 KEYBOARD_BUFFER_SIZE 有关。如果我把它变小,程序似乎运行良好,但它不输出任何事件。如果我把它变大,它运行起来会好一点,但它开始变慢然后卡住(OpenGL 窗口只有一个旋转的颜色立方体)。如何正确捕获键盘事件?
我检查了代码中所有设置步骤的返回值。他们都很好地返回 DI_OK。
最佳答案
您的代码似乎没问题(根据 this tutorial, which I have used in the past )。使用多个基于堆栈的数组是有问题的,但应该不是什么大问题(除非您开始运行大量并发的 getEvent 调用)。
但是,您最好的选择是 stop using DirectInput并开始使用 Windows Raw Input .最好尽早(即现在)进行此切换,而不是稍后才意识到您确实需要使用 DI 以外的其他东西来获得所需的结果。
关于c++ - 为什么我的 DirectInput8 堆栈会溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5670585/