如何使用 windows api 获取输入

Posted

技术标签:

【中文标题】如何使用 windows api 获取输入【英文标题】:How to get input with windows api 【发布时间】:2012-06-08 02:32:00 【问题描述】:

我和一些朋友开始制作电子游戏。不过,我对 windows api 还是很陌生,要为我们的早期阶段做一些原型设计,我需要知道如何解析通过 windows 消息系统给出的输入。我需要做的主要事情是以按下的键的形式从键盘获取输入。关于如何在 winProc 函数中解析 lParam 和 wParam 以找到按下的键的任何想法?

【问题讨论】:

【参考方案1】:

来自WM_KEYDOWN,wParam The virtual-key code of the nonsystem key.

来自WM_CHAR,wParam The character code of the key.

后者非常简单,而前者可以在这里引用:Virtual Key Codes。

假设您正在寻找转义键。在表格中可以看到vk代码是0x1B,但是它有一个别名VK_ESCAPE

case WM_KEYDOWN:
    if (wParam == VK_ESCAPE) 
        //handle
    

    break;

根据您需要处理的密钥类型自行选择。

【讨论】:

所以如果我想使用 WM_CHAR 我会这样做:`case WM_CHAR: if (wParam == 'w') //handle break;' @isANoob,应该可以。但是,在调度它之前,您必须在消息循环中调用TranslateMessage。无论如何,您应该养成始终这样做的习惯。如果您需要字符,则通常使用 WM_CHAR 比使用 WM_KEYDOWN 更容易。此外,字母键的虚拟键代码恰好是它们的大写 ASCII 等效项('a' 和 'A'(相同键)都是 65 (0x41))。 我一定要牢记这一点,但是 Visual C++ Win32 项目会自动创建它。如果我在没有它的情况下工作,我会努力养成这个习惯。

以上是关于如何使用 windows api 获取输入的主要内容,如果未能解决你的问题,请参考以下文章

想要使用 windows api 从键盘获取输入

使用 C#/Windows API 的虚拟键盘 - 发送键输入,但不获取焦点

如何从 WinRT Windows.Media API 中获取 Hololens 可定位相机视图和投影矩阵

如何使用 C++ 在 Windows 中获取硬件信息?

如何使用 VueJS 获取 json Web API 的值

TWS API使用教程3---如何使用TWS API从盈透证券中设置contract及获取contract的信息?