当前位置:C++技术网 > 资讯 > Win32下消除按键响应延迟的方法

Win32下消除按键响应延迟的方法

更新时间:2015-06-27 19:15:45浏览次数:1+次

解决方法: 
#define KeyTest(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)

     将这个宏用在“任何”记住是任何你需要按键处理的地方。例如你要判断是否同时按下了UP和LEFT ,

if(KeyTest(VK_UP)&&KeyTest(VK_LEFT)){……} 

分析:
    大多数人在做Win32下的编程,要把按钮的响应写在回调函数WndProc里,也就是走了消息循环。一般来说这是没有问题的,不过有些特殊的程序,比如游戏,或者一些按键密度较高的程序,如果把按键响应写在WndProc里,则会产生延迟,这样没有办法连续快速的对按键消息进行处理。很久之前我还在做c#的时候就是不明白消息响应这块,用GDI做的几个小游戏移动上都卡卡的。现在再也不用为这个问题而苦恼了,哈哈。
    我觉得既然我的这个问题的答案很难找,那我很应该分享给大家,我相信一些人也有这样的问题而找不到答案。
    即使现在这个方法也机缘巧合听一个大神教我的。好了,希望能帮到大家。