当前位置: 首页 > 工具软件 > WM Zoom > 使用案例 >

关于WM_CHAR函数中键盘各个按键的值

华振
2023-12-01
VC 键盘响应2009-08-01 17:11一:首先介绍键盘消息 
系统消息: 
    ALT,F1,——F24等,是由系统内部处理的,程序本身就存在,比如F1是帮助键。     WM_SYSKEYDOWN     WM_SYSKEYUP     WM_SYSCHAR 非系统消息: 
    是由我们自己加上去的,     WM_KEYDOWN     WM_KEYUP     WM_CHAR  
二:然后介绍虚拟键代码 
符号形式             十六进制形式        说明 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 键  
三:OnKeyDown不响应的原因: 
    只是这个消息在到达窗体之前,已经被它的子控件捕获了,如果将窗体中的所有控件都删除,窗体就会捕获到这个消息,但要注意的是,MFC为了实现在窗体上切换子控件的焦点,已经将 VK_TAB,VK_LEFT,VK_RIGHT,VK_UP,VK_DOWN进行了处理,同时VK_RETURN也被系统捕获用来处理相应的确定事件,所以即使窗体中没控件,这几个键还是无法捕获     也就是说,一个窗体仅在它没有可视和有效的控件时,才能响应OnKeyDown。  
四:具体的解决方法(按键响应方法) 
    可以调用窗体的PreTranslateMessage函数来实现,具体代码如下: BOOL CMeetingDlg::PreTranslateMessage(MSG* pMsg)  { 
if (pMsg->message==WM_KEYDOWN) { 
      switch (pMsg->wParam)       { 
              case VK_F1: 
                      if (::GetKeyState(VK_CONTROL)<0)   //为什么要小于0???                       { 
                             AfxMessageBox("ss");                       }                       break;                case VK_F2: 
                      if (::GetKeyState(VK_CONTROL)<0)                       { 
                             AfxMessageBox("ss");                       }                       break;         }  } 
return CDialog::PreTranslateMessage(pMsg); } 
    代码中,实现按下ctrl和F1时的键盘响应
 类似资料: