小甲鱼 发表于 2016-3-13 16:49:47

GetKeyState

函数功能:

GetKeyState 函数用于获取指定虚拟键的状态。

状态指的是该按键是否被按下,或者开关按键是否被打开(很多鱼油不清楚什么是开关按键,请瞄一下你们键盘上那个 Caps Lock 键)。


API 函数原型:

SHORT WINAPI GetKeyState(
_In_ int nVirtKey
);

参数解析:


参数 含义
nVirtKey 1. 虚拟键
2. 如果指定的虚拟键是一个字母或数字(A~Z,a~z,0~9),该参数必须设置该字符的 ASCII 值
3. 对于其他键,该参数必须是一个虚拟键代码(参考:Virtual-Key Codes)
4. 如果使用的是非英语键盘布局,在 A~Z 和 0~9 范围的虚拟键值被定义为绝大多数字符键。例如,对于德语键盘布局来说,ASCII 值为 O(0x4F)代表 "o" 键,而 VK_OEM_1 指带变音的 "o" 键


返回值:

返回值给出了指定虚拟键的状态,如下:

1. 如果返回值是负数(最高位置 1),说明该按键被按下,否则为正;

2. 如果返回值的最低位是 1,表示按键开关被打开。


备注:

1. 开关按键,例如 Caps Lock 按键,如果返回值的最低位是 1,那么该按键表示被打开,则按键上的小灯(如果有的话)对应是亮着的。

2. 该函数并非实时地检查键盘状态。更确切地说,它反映了到目前为止的键盘状态,并包含了正在被处理的当前消息(在大多数情况下这正是你想要的函数)。如果你确实需要了解某个键的当前实时状态,可以使用 GetAsyncKeyState 函数获取这一信息。

3. 应用程序可以使用 GetKeyState 函数来响应一个由键盘输入产生的消息。此时该程序获得的是在输入消息生成时该键位的状态。

4. 应用程序可以使用 Virtual-Key Codes 的宏定义作为 nVirtKey 参数的值。比如使用 VK_SHIFT, VK_CONTROL, 或 VK_MENU 可以响应对应的 SHIFT, CONTROL 或 ALT 按键的状态(不区分左右)。当然,如果应用程序需要区分具体是左边的按键被按下还是右边,可以使用更精确的定义:


[*]VK_LSHIFT
[*]VK_RSHIFT
[*]VK_LCONTROL
[*]VK_RCONTROL
[*]VK_LMENU
[*]VK_RMENU


【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。

页: [1]
查看完整版本: GetKeyState