⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untitled-36.txt

📁 mfc 教程
💻 TXT
字号:
同鼠标消息一样,有关Shift和Ctrl键状态的信息也没有编人键盘消息,因此Windows提供了
:: GetKeystate函数。给定一个虚拟键代码,:: GetKeystate将报告所询问的键是否被接下。
表达式
      ::GetKeystate(VK.SHIFT)
返回负值说明Shift键被按下,否则返回非负值。同样,表达式
      ::GetKeystate(VK.CONTROL)
在Ctrl键是按下时,返回负值。因此,下列从onKeyDown处理程序取出的代码段落中加括号
语句只有当Ctrl-Inft键(Ctrl键与左箭头键组合)被接下时才执行:
      。f《"Char== VK.LEFT)&&(::GetKeystate(VK.CONTROL)< O》 {
      S
    要查询 Aft键,可以用 VK.MENU参数调用::GetKeystate,或简单地在 "Flags参数中检查
上下文代码位。通常这些工作也不是必要的,因为如果Aft键被按下,窗口将接收到WM一
SYSKEYDOWN或WM.SYSKEYUP消息而不是WM—KEYDOWN或WM.KEYUP消息。也就
是说,消息ID通常会告诉您所需要知道的有关Aft键的一切信息。另外,还可以与
:: GetKeystate一起使用标识符 VK—LBUrtON、VK—MBUTTON以及 VK.RBUTTON来确定是否
有鼠标键被接下了。
    应用程序也可以使用:: GetKeystate来确定 Num Lock‘Caps LOck以及 Scroll lock键是处
于锁定还是关闭状态。返回码的高位显示当前是否有键被接下(高位为回时生成负数),而
低位(0位)则显示切换的状态。表达式
      ::GetKeystate(VILtuNUMLOCK)& Oxo上
在 Num Lock锁定时为非零值,否则为 0。同样的技巧可以用到 VKCAPITAL(Caps lock)和
VK_SCROLL(Scroll lock)键上。有一点很重要就是在测试之前要将返回码中除了最低位
以外的全部都屏蔽掉,这是因为高位仍然显示键抬起或按下的状态。
    在所有情况下,:: GetKeystate都是键盘消息生成时,而不是在函数被调用的那一刻,报
告键盘键或鼠标键状态的。这是一种特性,不是缺陷,因为这意味着您可以不必担心在消息
处理程序开始查询键状态之前键是否被释放了。由于它返回的信息只有在键盘消息从消息
队列中被检索到之后才有效,所以:: GetKeystate函数绝对不应该在键盘消息处理程序以外
使用。如果您确实需要知道键盘键或鼠标键的当前状态,或者想要在键盘消息处理程序以
外检查键盘键或鼠标键,可以使用:: GetAsyncKeystate来代替。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -