c++ - GetAsyncKeyState(int vKey) 中的点逗号减号

标签 c++ visual-studio-2010 winapi

我正在尝试使用 GetAsyncKeyState(int vKey) 函数,但我遇到了一个小问题: 它适用于字母、数字和按键(如 Enter 或 Space),但当我尝试使用例如逗号“,”时,该功能不起作用。

    #include <myHead.h>

    int main()
    {
    char i = 44;

        while(1)
        {
            Sleep(5);
            if(GetAsyncKeyState(i)<0)
            {
                cout << "Got it!";
            }
        }

    }

我应该补充一点,我使用的是 Windows 7 笔记本电脑

最佳答案

使用 VkKeyScanEx函数来了解给定字符的 VK 代码。

如果您只是对用户按下键盘上的相应键感兴趣,那应该可以解决问题。但是,如果您想区分移位/非移位和/或 ALT 的使用(如法语键盘上的欧元符号,Alt+E),事情就更复杂了。

简单的例子:

SHORT sRet = VkKeyScanEx( ',', 0 );
BYTE vk = LOBYTE( sRet );

在我的笔记本电脑上,vk 是 188 (0xBC) 并且 GetAsyncKeyState(188) 在我按下“,”键盘键(法语键盘)时返回 <0

(是的,VK_OEM_COMMA 是 0xBC)

关于c++ - GetAsyncKeyState(int vKey) 中的点逗号减号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20573137/

相关文章:

c++ - Qt/c++ QGraphicsItem 绑定(bind)到自定义类

c# - 在代码片段中获取命名空间

visual-studio-2010 - 使用 Visual Studio 2010 构建 cURL 和 libcurl

c - 禁止移动具有某些标题的窗口

c++ - GetProcessDEPPolicy 错误 87

c++ - 所有者使用 Windows API 绘制按钮的文本

c++ - 如何在模板类中拆分模板友元函数的定义?

C++如何替换一个函数但仍然使用原来的函数?

c++ - CRTP。试图理解给定的例子

c++ - 编译时使用 boost::split 警告