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

标签 c++ c winapi directx directinput

整体程序过于复杂,无法在此展示。基本上,只需注意 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/

相关文章:

c++ - 为什么我的程序在 boost::enable_shared_from_this<>/boost::shared_ptr<> 中崩溃?

c++ - 使用 IF 语句比较两个整数

C中的循环链表

c - 进度 4L SET-SIZE 语句和 C - malloc

c - 正确终止多线程 Windows 控制台应用程序

c++ - 将Qt qml文件转换为位图图像

c++ - 如何使用指针参数模拟方法

c# - TCP C 套接字服务器到 C# 客户端,数据包一起使用发送

c++ - 如何以编程方式将控制台字体设置为光栅字体?

c - 透明工具提示背景