虚拟键码未正确检测

时间:2014-07-14 11:37:55

标签: c++ winapi directx

我尝试编写一些基本功能来处理键盘和用户按下的键。我跟着一本教科书,创建了一个用于处理所有键的数组:

char keyboardKeys_[256];

我还为我的目的设置了一个宏:

#define KEYDOWN(name, key) ( name[key] & 0x80 )

现在我尝试模拟关键字' A' (虚拟键码0x41),用这种方式:

keyboardKeys_[0] = 0x41;

但是如果我试图检测到按下的按键它不起作用:

if( KEYDOWN( keyboardKeys_, 0x41 )  )
{ 
    MessageBox(NULL, "key pressed", "MessageBox caption", MB_OK);

}

这里有什么问题?消息框没有显示..

提前谢谢。

好的,我明白了,我试过的根本没有任何意义。考虑到我的情况,我想模拟关键字A'。在我的数组keyboardKeys_,' A'对应于项目编号30,同样,为了保持按下,我需要为此变量设置值0x80。 ' A'的虚拟键码是DIK_A

我的例子变成了:

keyboardKeys_[30] = 0x80;

if( KEYDOWN( keyboardKeys_, DIK_A )  )
{ 
    MessageBox(NULL, "key pressed", "MessageBox caption", MB_OK);

}

我希望它对其他人有用,谢谢你指出我正确的方向!

1 个答案:

答案 0 :(得分:1)

第1步

you set array position 0 to 65

第2步

you test bit 7 of array position 65 

这不可能做你想的那样