GetKeyState和GetAsyncKeyState的区别
来源:互联网 发布:小米手环2 f码淘宝 编辑:程序博客网 时间:2024/05/18 01:02
http://www.cnblogs.com/zdxster/archive/2011/01/27/1945900.html
VC中的GetKeyState和GetAsyncKeyState的区别
0x8000是16进制数,用2进制表示为1000 0000 0000 0000, &是按位与
同样,如果键被按下,返回值最高位为1,则1xxx xxxx xxxx xxxx & 1000 0000 0000 0000得到的结果为1,否则为0,同样可以判断最高位的值。
需要说明的是,::GetKeyState()只能在键盘消息处理程序中使用,因为它只有在线程从消息队列中读取键盘消息时才会报告被查询键的状态,如果需要在键盘消息处理程序以外查询按键状态,则需要使用::GetAsyncKeyState来代替
http://blog.csdn.net/ryanzll/article/details/4038114
GetKeyState和GetAsyncKeyState的区别
刚接触这个两个函数的时候,我也特别困惑,不知道二者有什么差别,看了msdn之后,也不是很清楚。遍寻web,才略有了解,分享给大家。
简单的说。
GetAsyncKeyState就是检查在调用该函数时,某一key的状态。
而GetKeyState是检查window message发生时,某一key的状态。
举例说明如下:
1. GetAsyncKeyState
// 检查是否Ctrl和tab键同时按下,使用GetAsyncKeyState
void CheckKeyState1(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN && GetAsyncKeyState(VK_CONTROL) < 0 &&
pMsg->wParam == VK_TAB)
{
return FALSE;
}
}
如果在MSG产生的时候,Ctrl是没有按下的;而在调用GetAsyncKeyState的那一刻,Ctrl是按下的。那么GetAsyncKeyState会通知你Ctrl是按下的。反之通知你Ctrl是没有按下的。
2. GetKeyState
// 检查是否Ctrl和tab键同时按下,使用GetKeyState
void CheckKeyState2(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN && GetKeyState(VK_CONTROL) < 0 &&
pMsg->wParam == VK_TAB)
{
return FALSE;
}
}
如果在MSG产生的时候,Ctrl是按下的,那么GetKeyState会通知你Ctrl是按下的。反之通知你Ctrl是没有按下的。与调用GetKeyState那一刻Ctrl的状态是没有关系的。
That’s all!
- GetKeyState和GetAsyncKeyState的区别
- GetKeyState()和GetAsyncKeyState()的区别
- GetKeyState()和GetAsyncKeyState()的区别
- GetKeyState和GetAsyncKeyState的区别
- GetKeyState()和GetAsyncKeyState()的区别
- GetKeyState和GetAsyncKeyState的区别
- GetKeyState()和GetAsyncKeyState()的区别
- GetKeyState 和 GetAsyncKeyState 区别
- GetKeyState 和 GetAsyncKeyState 区别
- VC中的GetKeyState和GetAsyncKeyState的区别
- GetKeyState与GetAsyncKeyState的区别
- GetKeyState、GetAsyncKeyState、GetKeyboardState的区别:
- GetKeyState和GetAsyncKeyState以及GetKeyboardState函数的用法与区别
- 按键判断之GetKeyState 和 GetAsyncKeyState 区别
- GetKeyState、GetAsyncKeyState、GetKeyboardState函数的区别:
- GetKeyState、GetAsyncKeyState、GetKeyboardState函数的区别:
- Win32 GetKeyState和getasynckeystate
- GetKeyState、GetAsyncKeyState、GetKeyboardState函数的区别 以及虚拟键值
- DirectUI的初步分析
- 无线网络标准
- IOS-文件操作合集-待更新
- 机器视觉常用词及专业化词汇
- Android init 启动过程分析(二)
- GetKeyState和GetAsyncKeyState的区别
- sql中exists,not exists的用法解析
- 磁盘I/O性能监控和调优方法&iostat 总结 1/24
- distcc 分布式部署步骤
- PL/SQL学习(存储过程)
- Python_使用csv模块解析csv文件
- static 关键字详解
- 七步教你windows下php5.4安装
- live555 Streaming Media 分析与开发