gpt4 book ai didi

c++ - 从 WM_CHAR 消息中获取虚拟键码

转载 作者:太空狗 更新时间:2023-10-29 20:30:13 26 4
gpt4 key购买 nike

我正在从 WM_CHAR 和 WM_KEYDOWN 消息中获取文本输入和按键输入

我想做的是过滤掉 WM_CHAR 消息,这些消息与绑定(bind)的键具有相同的 VK_ 代码,以启用您在其中输入文本的控件。

EG:游戏使用 ~ 来启用控制台,键绑定(bind)是通过 VK_OEM3 和 WM_KEYDOWN 完成的,但是输入到控制台的文本需要来自 WM_CHAR 的文本。

由于 WM_KEYDOWN 首先发生,控制台被激活,然后 ~ 的 WM_CHAR 被发送到我不想要的控制台缓冲区。

我认为防止这种情况的最佳方法是将 WM_CHAR 中的 VK_ 与控件的绑定(bind)键进行比较并将其过滤掉。

有没有办法从 WM_CHAR 消息中获取 VK_?

我读到您可以从 Lparam 的第 16-23 位获取扫描码

但我不确定如何:

  1. 从 lparam 中提取扫描码的值
  2. 将扫描码正确翻译成VK_

最佳答案

经过一番折腾后,我设法使用以下代码提取了虚拟 key :

此代码获取 lParam 的地址作为无符号字符数组(长度为一个字节),然后使用指针算术来寻址第 3 个字节(位 16-23):

  unsigned char scancode = ((unsigned char*)&lParam)[2];

此代码将扫描码转换为虚拟键:

  unsigned int virtualKey = MapVirtualKey(scancode,MAPVK_VSC_TO_VK);

关于c++ - 从 WM_CHAR 消息中获取虚拟键码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7682999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com