GetAsyncKeyState中的Dot Comma Minus Plus(int vKey)

时间:2013-12-13 18:07:49

标签: 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 Lap Top

1 个答案:

答案 0 :(得分:2)

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

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

简单示例:

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

在我的笔记本电脑上,当我按下''键盘键(法语键盘)时,vk为188(0xBC),GetAsyncKeyState(188)返回&lt; 0

(是的,VK_OEM_COMMA是0xBC)