我查看了MapVirtualKey()和ToAscii()。

MapVirtualKey()仅给我未移位的字符。 ToAscii()仅适用于转换为ASCII值的vk代码。

我需要检测例如“Ctrl + Shift + 3”作为Ctrl Activity ,Shift Activity 和'#'。

有什么线索吗?

最佳答案

这是我最终做到的方式:

case WM_KEYDOWN:
        GetKeyboardState(kbs);
        if(kbs[VK_CONTROL] & 0x00000080)
        {
            kbs[VK_CONTROL] &= 0x0000007f;
            ::ToAscii(p_wParam, ::MapVirtualKey(p_wParam, MAPVK_VK_TO_VSC), kbs, ch, 0);
            kbs[VK_CONTROL] |= 0x00000080;
        }
        else
            ::ToAscii(p_wParam, ::MapVirtualKey(p_wParam, MAPVK_VK_TO_VSC), kbs, ch, 0);

然后,我从kbs []获取所有修饰键的状态。

关于c++ - 在Windows上,如何将虚拟键码转换为转换后的字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3864153/

10-12 20:41