C++ (Windows):将虚拟键码字符串表示“VK_F6”转换为十六进制0x75

问题描述

在 C++ (Windows) 中是否有一种优雅的方式来获取虚拟键代码的字符串表示(例如 VK_NUMPAD0、VK_F6、VK_INSERT、VK_RSHIFT 等)并将其转换为其相应的十六进制值(例如 0x60、0x75、0x2D 、0xA1 等)?目前,我知道使用 switch 语句、if 语句、map 等会起作用(我正在使用这种技术),但这些都显得笨拙和不雅(它们是“硬编码”并且可能不是最通用的)解决方案。我想一定有一些专门为此类任务设计的 API。

我查看了 MSDN 文档中可能有帮助的任何 API,但我发现的最接近的是 VkKeyScan、MapVirtualKey 和 ToAscii,但这些似乎都不是我正在寻找的(或者至少我不知道组合使用它们)。我知道我错过了一些东西,可能只是不知道要寻找的正确想法。

预期(伪代码):

auto key_pressed = GetVkFromString("VK_F6"); // gets 0x75

同样,是否有跨平台的解决方案?我知道 VK_ 常量是特定于 Windows 的,但我很想知道是否有适用于多个平台(包括 Windows)的替代解决方案。我现在不需要支持他们,但我总是想记住这一点。

以防万一有人问这是否是 X 与 Y 问题或相关问题,原因是我们使用的是半用户友好的配置文件 (JSON),它允许将我们应用程序中的各种命令绑定到键(并在用户选择时更改)。我们希望这个文件一个相对容易编辑的文件,而不需要像十六进制那样在其中放入笨拙的数据类型。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)