因为EasyUse程序要用到键盘加速,中间遇到了一些难题。汇总以便以后使用。

1、该在哪个地方截取消息(?)

关于这问题,认识还不够深刻。有一点可以确定,你在程序运行的CXXApp和CXXDlg的PreTranslateMessage()中截取消息函数肯定是不一样的。

一个是程序运行全过程都可以出发键盘操作的。

关于在对话框中出发消息,是在PreTranslateMessage()还是在OnKeyDown()中触发,还暂时没搞清楚。留以后搞清楚了去写。我是在PreTranslateMessage()中出发也没有成功

2、用什么判断触发了键盘操作。

1.可以检查MSG *pMsg变量的message变量判断消息的类型。当为WM_KEYDOWN时表示,有键被按下pMsg->wParam说明是什么键被按下。

具体的键的表示如下:

符号形式             十六进制形式        说明
VK_LBUTTON           01             鼠标左键
VK_RBUTTON            02             鼠标右键
VK_CANCEL             03          Control-break 过程
VK_MBUTTON          04                  鼠标中键
VK_BACK                 08           BACKSPACE 键
VK_TAB                    09              TAB 键
VK_CLEAR               0C                CLEAR 键
VK_RETURN              0D            ENTER 键
VK_SHIFT                 10                 SHIFT 键
VK_CONTROL         11                 CTRL 键
VK_MENU                 12                   ALT 键
VK_PAUSE               13                PAUSE 键
VK_CAPITAL             14                CAPS LOCK 键
VK_ESCAPE            1B            ESC 键
VK_SPACE               20                SPACEBAR
VK_PRIOR                21                PAGE UP 键
VK_NEXT                 22                PAGE DOWN 键
VK_END                   23                  END 键
VK_HOME                24             HOME 键
VK_LEFT                 25               LEFT ARROW 键
VK_UP                      26               UP ARROW 键
VK_RIGHT                27               RIGHT ARROW 键
VK_DOWN                28               DOWN ARROW 键
VK_SELECT              29              SELECT 键
VK_EXECUTE          2B                 EXECUTE 键
VK_SNAPSHOT        2C                    PRINT SCREEN键(用于Windows 3.0及以后版本)
VK_INSERT              2D                   INS 键
VK_DELETE            2E                         DEL 键
VK_HELP                 2F                         HELP键

VK_LWIN                 5B                  Left Windows 键 (Microsoft自然键盘)
VK_RWIN                 5C                Right Windows 键 (Microsoft自然键盘)
VK_APPS                5D                  Applications 键 (Microsoft自然键盘)
VK_NUMPAD0         60                 数字小键盘上的 0 键
VK_NUMPAD1         61                    数字小键盘上的 1 键
VK_NUMPAD2         62                 数字小键盘上的 2 键
VK_NUMPAD3         63                 数字小键盘上的 3 键
VK_NUMPAD4         64                 数字小键盘上的 4 键
VK_NUMPAD5         65                   数字小键盘上的 5 键
VK_NUMPAD6        66                数字小键盘上的 6 键
VK_NUMPAD7        67               数字小键盘上的 7 键
VK_NUMPAD8          68               数字小键盘上的 8 键
VK_NUMPAD9         69               数字小键盘上的 9 键
VK_MULTIPLY          6A              Multiply 键
VK_ADD                   6B                 Add键
VK_SEPARATOR           6C           Separator 键
VK_SUBTRACT             6D              Subtract 键
VK_DECIMAL              6E               Decimal 键
VK_DIVIDE               6F               Divide 键
VK_F1                    70               F1 键
VK_F2                    71                  F2 键
VK_F3                    72                   F3 键
VK_F4                    73                   F4 键
VK_F5                     74               F5 键
VK_F6                    75                  F6 键
VK_F7                    76                 F7 键
VK_F8                    77                  F8 键
VK_F9                    78                  F9 键
VK_F10                 79                 F10 键
VK_F11                 7A                 F11 键
VK_F12                 7B                 F12 键
VK_F13                 7C               F13 键
VK_F14                 7D               F14 键
VK_F15                 7 E                   F15 键
VK_F16                 7F                F16 键
VK_F17                80H               F17 键
VK_F18                81H              F18 键
VK_F19                82H               F19 键
VK_F20               83H            F20 键
VK_F21               84H             F21 键
VK_F22                85H             F22 键
VK_F23               86H            F23 键
VK_F24                 87H            F24 键
VK_NUMLOCK         90            NUM LOCK 键
VK_SCROLL         91             SCROLL LOCK 键
VK_ATTN              F6              Attn 键
VK_CRSEL          F7               CrSel 键
VK_EXSEL           F8             ExSel 键
VK_EREOF          F9              Erase EOF 键
VK_PLAY            FA           Play 键
VK_ZOOM           FB             Zoom 键
VK_OEM_CLEAR     FE         Clear 键

代码如下:

if (pMsg->message==WM_KEYDOWN)
{
 switch(pMsg->wParam)
 {
 case 'VK_CONTROL':
   break;
  }
  
}
3、如何触发使用组合键?

使用SHORT GetKeyState(int nVkey);SHORT GetAsyncKeyState(int vKey);两个函数判断键盘某个键是不是按下。

通过GetKeyState()返回的SHOTR类型值判断,按键的方式。SHORT为16位的整数,例如SHORT keyState=GetKeyState(VK_NUMLOCK);

若高序位为1,则键处于DOWN状态,否则为UP状态。因此keyState>0表示高序位为0,键没有按下,keyState<0表示按下
若低序位为1,则键被触发。例如CAPS LOCK键,被找开时将被触发。若低序位置为0,则键被关闭,且不被触发。触发键在键盘上的指示灯,当键被触发时即亮,键不被触发时即灭。

keyState&x00FF

【EasyUse】关于键盘加速键的几点思考相关推荐

  1. mfc使用键盘加速键

    首先创建一个菜单,ID分别为IDM_FILE_NEW,IDM_FILE_OPEN,IDM_FILE_CLOSE. 分别对菜单各项进行响应. 在OnInitDialog()中,添加标题栏菜单: HMEN ...

  2. 10.3 键盘加速键

    摘录于<Windows程序(第5版,珍藏版).CHarles.Petzold 著>P373 键盘加速键是可以生成 WM_COMMAND(或者有时是 WM_SYSCOMMAND)消息的组合键 ...

  3. 非框架窗口键盘加速键的使用

    在设计应用程序菜单时,可以选择使用键盘加速键给任意或者全部菜单项分配快捷键,加速键也会引发WM_COMMAND消息. 第一步,是要创建一个加速键表(特殊的资源).具体方法是,在资源列表视图里面,添加加 ...

  4. 技法:对你的应用添加键盘加速键

    对IsDialogMessage的误解 有一个API函数可能经常容易造成误解,它就是IsDialogMessage.IsDialogMessage将会判断一个消息是否是针对指定对话框的消息,如果是的话 ...

  5. 关于VS2010中键盘加速键无效的问题

    / // // Accelerator //IDR_ACCELERATOR ACCELERATORS BEGINVK_F2, IDM_NEW, VIRTKEY, NOINVERT END 在资源中添加 ...

  6. 加载自己的键盘加速键

    // TODO: 在此添加专用代码和/或调用基类 //1.加载加速键表 HINSTANCE hInst=AfxGetResourceHandle(); LPCTSTR lpID=MAKEINTRESO ...

  7. Visual C++——加速键

    基本概念 加速键:用户在键盘上按下了定义的加速键也将产生相应的命令消息. 什么是键盘加速键?加速键是产生WM_COMMAND消息(有些情况下是WM_SYSCOMMAND)的键组合.许多时候,程序使用加 ...

  8. Windows 编程 键盘

    键盘对于大家来说可能再也熟悉不过了,它和鼠标是现在最常用的电脑输入设备.虽然在现在的图形界面操作系统下使用鼠标比使用键盘更方便.更广泛,但是鼠标还是一时半会儿取代不了它的老前辈--键盘的地位,尤其是在 ...

  9. 小学计算机键盘的初步认识教案,小学信息技术西交大三(上)第六课:初步认识键盘(教案...

    <小学信息技术西交大三(上)第六课:初步认识键盘(教案>由会员分享,可在线阅读,更多相关<小学信息技术西交大三(上)第六课:初步认识键盘(教案(2页珍藏版)>请在人人文库网上搜 ...

最新文章

  1. 记一次Spring boot 和Vue的前后端分离的入门培训
  2. h5页面提示只能在微信浏览器中打开_电子问卷h5怎么做?
  3. iOS:后台定位并实时向服务器发送位置
  4. CSDN总结的面试中的十大可视化工具
  5. cache buster issue application index and duplicate .library file
  6. QT-在子控件上绘图的两种方式
  7. 实现 VUE 中 MVVM - step10 - Computed
  8. dns服务 很多问题,后续再研究
  9. MacOS中安装Consul(启动及关闭)
  10. mysql column legnth too big for_Column length too big for column 'Flist' (max = 21845);
  11. linux sd卡空间,充分利用树莓派中的SD卡空间
  12. ES6新语法之let关键字;有别于传统关键字var的使用
  13. html中显示框框中对勾,如何打出方框里有对勾
  14. 函数名作为字符串输出(Function Names as Strings)
  15. 网络协议 11 - Socket 编程(下)
  16. 第一章 编程基础_ASCII 编码和GBK编码
  17. java实习面试复盘(22年广州番禺)
  18. 静态路由设置实例解析
  19. 单机版Docker Swarm安装及试用
  20. 一步步实现一个城市选择器

热门文章

  1. 深蓝积分,来自深蓝积分精湛系统领先服务
  2. oracle connect by用法篇
  3. 英伟达960Linux驱动下载,全面支持GTX960 NVIDIA发布347.25驱动
  4. vue echarts 玫瑰图
  5. android swf 用什么打开方式,安卓swf文件用什么打开_swf文件用什么打开 mac_swf文件用什么打开 ipad...
  6. 产品经理必备神器——Axure软件试用评测
  7. 将png转换为bmp格式
  8. 我对计算机最感兴趣作文300,我与电脑作文300字
  9. 碎片文字摘录,触动心灵的文字,愿其成为我们前行的慰藉
  10. Mac上的Safari怎么屏蔽特定网站