zoukankan      html  css  js  c++  java
  • Windows编程学习笔记(六)

    第四章 键盘

    本章主要学习了windows键盘处理的过程,东西很杂碎,wParam lParam这两个重要的参数。

    /***************************************************************/

    队列和同步

        当使用者按下并释放键盘上的键时,产生的格式消息并不保存在消息队列中,windows在所谓的系统消息队列中保存这些消息。只有当Windows应用程序处理完前一个使用者输入消息时,Windows才会从系统消息队列中取出下一个消息,并将其放入应用程序的消息队列中。

    按键消息

    当按下一个键时,windowsWM_KEYDOWNWM_SYSKEYDOWN消息放入具有输入焦点的窗口的消息队列,当释放一个键时,windowsWM_KEYUPWM_SYSKEYUP放入消息队列。

    虚拟键码

    虚拟键码保存在WM_KEYDOWN WM_KEYUP WM_SYSKEYDOWN WM_SYSKEYUP中的wParam参数中,此代码标识按下或释放的按键。而lParam保存了下列6个字段32字节的信息:

    0~15: 16-Bit Repeat Count 16~23: 8-bit OEM Scan Code 24: Extended Key Flag 29: Context Code 30: PreviousKeyState 31: Transition State;

        虚拟键码中由四个键 VK_LBUTTON ,VK_RBUTTON,VK_MBUTTON,VK_CANCEL,我们不能从键盘消息中捕获这几个键码,我们只能从鼠标消息中捕获他们。

    /***********************************************************/

    ·键的先前状态:如果在此之前键是释放的,则键的先前状态为0,否则为1 WM_KEYUP WM_SYSKEYUP消息中总是设定为1.

    ·转换状态:如果键正被按下,则转换状态为0;如果键正被释放,则转换状态为1。对WM_KEYDOWN或者WM_SYSKEYDOWN消息,此字段为0;对WM_KEYUP或者WM_SYSKEYUP消息,此字段为1

    ·位移状态

    在处理按键消息时,您可能需要知道是否按下了位移键(ShiftCtrlAlt)或开关键(Caps LockNum LockScroll Lock)。通过呼叫GetKeyState函数,您就能获得此信息。例如:

    iState = GetKeyState (VK_SHIFT) ;

    如果按下了Shift,则iState值为负(即设定了最高位置位)。如果Caps Lock键打开,则从

    iState = GetKeyState (VK_CAPITAL) ;

    传回的值低位被设为1。此位与键盘上的小灯保持一致。

    /**************************************************************/

    当我们需要捕获一些字符按键,可以用WM_CHAR捕获字符按键。例如在窗口消息处理函数中:

    case VM_CHAR:

    switch(wParam)

    {

        case ‘a’:

             do something;

             break;

        case ‘b’:

             do something else]

             break;

    }

    Break;

  • 相关阅读:
    基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建
    基于Html5 Plus + Vue + Mui 移动App开发(三)-文件操作(读取、保存、更新数据)
    基于Html5 Plus + Vue + Mui 移动App 开发(二)
    Mysql数据库(一)-------安装
    Sublime---破解+安装+安装插件
    Bayboy功能详解
    MySQL基础语句
    python变量类型&字符串的内建函数使用
    数据库基础知识笔试题(一)
    软件测试笔试题(二)
  • 原文地址:https://www.cnblogs.com/lvpengms/p/1662808.html
Copyright © 2011-2022 走看看