为什么我的DirectInput8会堆栈溢出?

5
整个程序过于复杂,无法在此展示。基本上,只需要注意我最近git提交中的绿色高亮部分。我对DirectInput非常陌生,所以我预计会犯几个错误。我非常仔细地研究了MSDN文档,所以我保证我不是随便抛出问题并在上面盖上FIX IT FOR ME的章子。

基本上,我认为我已经将我的问题缩小到围绕Engine::getEvent(第238行+)的代码区域。我不理解这些函数如何工作,并且我已经更改了某些部分以获得不同的结果。我的目标是直接读取键盘事件并将这些原始数字输出到屏幕上(稍后我将处理数字的含义)。这里的问题与KEYBOARD_BUFFER_SIZE有关。如果我将其设置得很小,程序似乎运行良好,但不会输出任何事件。如果我将其设置得很大,它会运行得更好,但它开始变慢,然后冻结(OpenGL窗口只有旋转的彩色立方体)。如何正确捕获键盘事件?

我检查了代码中所有更高级别的设置步骤的返回值,它们都正常返回DI_OK。


包括堆栈溢出时的重复部分可能会很有用。 - David
1个回答

2

根据我过去使用的这个教程,您的代码似乎没有问题。使用多个基于堆栈的数组是可疑的,但不应该成为太大的问题(除非您开始运行大量并发的getEvent调用)。

然而,您最好停止使用DirectInput并开始使用Windows Raw Input。最好尽早进行此转换(即现在),而不是后来才意识到您真正需要使用与DI不同的东西才能获得想要的结果。


哇,我完全不知道DirectInput已经这么过时了。你说得对。Windows Raw Input(WRI)完全可以胜任这项工作。谢谢! - TheBuzzSaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接