您的位置:首页 > 其它

怎样判断键盘是否有按键按下?

2012-07-23 01:25 706 查看
一般情况下我们边写程序需要在程序运行中判断是否用户按下了键盘的键,比如按任意键退出的实现,那么怎样实现这个功能呢?有人可能想到C++中的Meaasge中用case判断,太麻烦了,或者用kbhit()函数,这个函数不错,但是这个函数有时候还是不太好用,如果在while(!kbhit())中有很大一个循环,猜下会有什么结果?这里推荐一种判断的方法,采用API函数GetAsyncKeyState(),具体参数解释,老规矩见MSDN,具体实现如下:

我们可以在文件头定义:#define KEY_DOWM(vk_c) (GetAsyncKeyState(vk_c)&0x8000?1:0)

这样我们可以在程序循环中直接使用KEY_DOWN(/*按键值*/)来判断某个键是否被按下。

比如KEY_DOWN("A")来判断A键有没有被按下,如果被按下返回一个true。

////////////////////////////////////////////

bool quit = false;

while(!quit)

{

if(KEY_DOWN(VK_ESCAPE) quit=true;

//Do SomeThing

}

////////////////////////////////////////////

在这个循环中,当你按下Esc键,循环退出;

vk_c是一个虚拟键值,比如VK_ESCAPE是Esc键的虚拟键值。

这样就实现了判断是否有键盘键被按下的功能,试试吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: