使用 GetasyncKeyState 获取 C++ 中的小写字母
get lowercase letters in c++ using getasynckeystate
当我
使用 getasynckeystate
写入文件时,我试图获取小写字母,但我无法这样做,我也不能写 @
和 $
等符号,这是我正在使用的代码。我试过使用GetKeyState
但这也不起作用,WM_KEYDOWN
也没有。
if( GetAsyncKeyState(i) == -32767 )
{
save(i, "keys.txt");
}
它以大写字母保存所有内容,当我尝试使用 Shift + 任何数字键时,没有保存任何符号。
GetAsyncKeyState()
或多或少地使用物理击键。它无法告诉您大写和小写之间的区别,因为它仍然是相同的键(即"a"和"A"是键盘上的同一键)。要确定大小写,它需要考虑移位和大写锁定,以及键盘布局和本地化。类似的问题会影响多个符号,例如 @ 和 $。它们在布局和区域设置之间差异太大。
要获取案例信息和其他特定于区域设置的内容,您需要将WM_CHAR
与TranslateMessage()
结合使用。不过,对于非字符键,您仍然需要WM_KEYDOWN
和WM_KEYUP
,例如 Delete 和 F1-12。您可以在此处从 MSDN 获取更多信息:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646268(v=vs.85).aspx
作为旁注,您在技术上错误地检查了GetAsyncKeyState()
的返回值。简单地将结果与 -32767 进行比较可能不可靠。从有关返回值的文档中:
如果设置了最高有效位,则键关闭,如果设置了最低有效位,则在上次调用 GetAsyncKeyState 后按下该键。但是,您不应依赖最后一种行为;
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 最小硬币更换问题(自上而下方法)
- Qt VTK交互风格的信号到小部件
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 使用递归的数组的最小值.这是怎么回事
- 为什么在浮点中从大到小会引入更多的误差
- 找到两对数字,使它们的乘积的绝对差最小化
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- 最大和最小 1 C++函数
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 我可以做些什么来消除或最小化这种将提供相同功能和行为的代码重复
- 如何在QT中的自定义视频小工具t上绘制矩形
- 在二维数组中查找最小值和最大值?
- 查找矩阵C++中每一列和每一行的最小和最大元素
- 如何找到大于整数的最小数字
- 小字符串优化(调试与发布模式)
- QtDesigner自定义小部件
- 字节真的是最小可寻址单元吗
- 带自定义比较器的最小优先级队列