标题:关于“GetKeyState”函数的返回值
取消只看楼主
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:109
专家分:0
注 册:2009-3-17
结帖率:70%
 问题点数:0 回复次数:1 
关于“GetKeyState”函数的返回值
有资料介绍说:GetKeyState 函数的返回值,其中有一段话是这样说的:
如果开关键打开,则位0设为1(开关键包括CapsLock, NumLock,ScrollLock);即(0000000000000001),如果某键正处于按下状态,则位15为1;即(1000000000000000),如已经抬起,则为0
为什么我实际测试的结果与上述不符?
问题一:不管开关键(CapsLock, NumLock,ScrollLock)是否打开或关闭,返回值都是-127、-128交替出现,貌似与开关键无关
问题二:返回值是-127(或-128)转成二进制是:1111111110000001 ,位15~位7都是1;根本不是上面说的“位15为1;即(1000000000000000)”




搜索更多相关主题的帖子: 函数 返回值 关键 打开 交替 
2018-01-11 10:39
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:109
专家分:0
注 册:2009-3-17
得分:0 
你说的没错,共4种结果:0、1、-127、-128
不过0 和 1 是键抬起时的结果;而-127 和 -128 是键按下时的结果,(我忽略键抬起时的状态)
当我把开关键(CapsLock, NumLock,ScrollLock)全部关闭;(使键盘上的灯全灭),进行测试
例如:用“Text1_KeyDown”事件
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    Debug.Print GetKeyState(vbKeyA) '按下“A”键,返回-127,抬起后再按下“A”键,返回-128,-127、-128交替出现
End Sub

当我把某一开关键打开,如 NumLock;(使键盘上的灯亮),再用上段进行测试,返回的结果是相同的(也是-127、-128交替出现
)。因此我觉得“GetKeyState”函数不能反应出开关键的状态,有些资料有误导
2018-01-12 13:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484155-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.273854 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved