在游戏中处理鼠标和键盘输入的不同选项

Posted

技术标签:

【中文标题】在游戏中处理鼠标和键盘输入的不同选项【英文标题】:Different options to handle mouse and keyboard input in a game 【发布时间】:2010-02-05 07:27:16 【问题描述】:

我最近开始接触 DirectX 以及游戏编程。我已经开始充实我的程序基础,现在我正在寻求处理输入。我现在的方法是在我的主循环中调用一个函数,该函数使用 GetDeviceState(简而言之)及其各自的参数来查询鼠标和键盘;但是,在对 DirectInput 进行了更深入的阅读之后,我看到很多人说不再推荐使用 DirectInput。微软似乎也同意了!

我正在寻找其他方法来做这件事,以及关于它们的利弊讨论(不是必需的,但欢迎。我可以研究)

【问题讨论】:

【参考方案1】:

只需使用 GetMessage 或 PeekMessage,请参阅 should-i-use-directinput-or-windows-message-loop 举个例子。

【讨论】:

啊,是的,我喜欢这个外观。应该可以完美运行,我将立即开始,我在编写代码时玩得很开心【参考方案2】:

您可以使用 win32/windows API。

gamedev 的人似乎同意:http://www.gamedev.net/community/forums/topic.asp?topic_id=511020

【讨论】:

【参考方案3】:

对于键盘,我通常使用 GetAsyncKeyState();。它表示在执行此功能时是否按下了键。

但对于鼠标,我认为最好的解决方案是使用 DirectInput。因为windows会监控它的位置,而你不必。

【讨论】:

【参考方案4】:

现在建议使用"Raw Input"。

【讨论】:

坏主意,除非您使用操纵杆。这样,您应该编写大量个人代码来处理您的用户可能使用的每一种可能的文化(相对地配置他们的键盘输入)或配置(反向鼠标按钮配置、双击速度等)等等......正如其他人所说,将其留给 Windows 消息通常是一个更好的主意。 据我所知,对于普通 Windows 消息(触摸板、操纵杆、麦克风等)不支持的设备,建议使用原始输入。 好吧,我想这最终取决于用户。绝对在您曾经使用 DirectInput 的任何地方,您现在都应该使用 Raw Input。就我个人而言,我一直认为将键盘视为一组未知按钮比知道用户是按“A”键还是“Z”键更有用......

以上是关于在游戏中处理鼠标和键盘输入的不同选项的主要内容,如果未能解决你的问题,请参考以下文章

键盘输入鼠标输入焦点处理

鼠标坏了,怎样用键盘操作电脑呢?

安卓平板外接鼠标使用正常,外接键盘只能输入数字和英文。下载了百度输入法,也只能使用虚拟键盘。

检测模拟键盘/鼠标输入

覆盖应用程序的低级键盘挂钩问题

如何监听windows虚拟键盘