如何解决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 举报,一经查实,本站将立刻删除。