如何让GetKeyState理解大写和非大写字母

时间:2016-12-20 23:05:02

标签: c winforms case-sensitive

嘿伙计我正在使用C中的Codeblocks。我读了https://msdn.microsoft.com/en-us/library/windows/desktop/ms646301(v=vs.85).aspx但我无法理解我需要在此代码中进行更改以使其区分大小写。

void getInput()
{
    while(1)
    {
        if((GetAsyncKeyState('A') & 0x8008)) {
            printf("qwe");
        }
    }
}

代码有效,我没有收到任何错误。唯一的问题是,这并不区分按aA,它会在两种情况下都打印qwe。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

感谢@EugeneSh。,解决方案是检查VK_CAPITAL的状态,看看是否 Shift

if((GetAsyncKeyState('A') & 0x41) && GetKeyState(VK_CAPITAL)) {
    key_pressed=KEY_A; printf("qwe");
}
if((GetAsyncKeyState('B') & 0x8008) && !GetKeyState(VK_CAPITAL)) {
    key_pressed=KEY_B; printf("asd");
}