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

原创 2013年12月03日 21:28:14

因为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】一键式检索框-界面美化参考。MFC自绘对话框加图和Button

MFC无标题栏自绘对话框可拖动按钮三态仿QQ弹窗样式 分类: MFC2013-08-13 13:07 208人阅读 评论(0) 收藏 举报 自绘可拖动按钮三态无标题栏对话框仿QQ弹...

10.3 键盘加速键

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

利用 Java.awt.Robot 模拟键盘输入遇到的几点问题(组合键,双引号)

刚学习完java se 由于是自学免不了绕弯子,好在各大神鼎力相助,问题都得到解决,希望能够帮到遇到同样问题的朋友。 这些天在做一个超级迷你的MyEclipse,于是用到了Java.awt.Robot...

一键通(PoC)市场发展的几点思考

一键通的市场背景,技术特点分析,市场发展策略等
  • zthsss
  • zthsss
  • 2011年05月14日 15:19
  • 344

电子白板辅助教学的几点思考

  • 2015年04月09日 10:01
  • 30KB
  • 下载

看了极光推送技术原理的几点思考

2012-11-26 20:50 9321人阅读 评论(16) 收藏 举报 目录(?)[-] 移动互联网应用现状移动无线网络的特点Android 平台上长连接的实现 Time...

关于芯片选型的几点思考

  • 2012年03月31日 16:42
  • 23KB
  • 下载

关于游戏乐趣的几点思考

关于游戏乐趣的几点思考         游戏开发面临的最基本的问题是:如何让一个游戏好玩。要回答这个问题,需要先解决一个更基本的问题:好玩的定义是什么?   人是为什么会觉得好玩的呢?   平常人的解...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【EasyUse】关于键盘加速键的几点思考
举报原因:
原因补充:

(最多只允许输入30个字)