关闭

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

标签: jianpan
718人阅读 评论(0) 收藏 举报
分类:

因为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

 

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:81709次
    • 积分:1268
    • 等级:
    • 排名:千里之外
    • 原创:46篇
    • 转载:22篇
    • 译文:0篇
    • 评论:4条
    最新评论