分享

添加键盘响应事件

 冉亮 2010-07-23

如何在vc中添加键盘响应事件

1.         ClassView中Add Windows Message Handle 添加WM-KEYDOWN和WM-KEYUP,Add Virtural Functions添加PreTranslateMessage

2.         BOOL **Dlg::PreTranslateMessage(MSG* pMsg)中添加

{  

       if (pMsg-> message == WM_KEYDOWN)

              {

                     if(pMsg-> wParam== VK_RETURN)//直接用虚码代替就可以响应所指键

                     SetInfo(WDK_OK);      //回车对应ok

              }

       if (pMsg-> message == WM_KEYDOWN)

              {

                     if(pMsg-> wParam== VK_BACK)//直接用虚码代替就可以响应所指键

                     SetInfo(WDK_C);         //backspace对应删除

              }

       return CDialog::PreTranslateMessage(pMsg);

}

3.         虚拟[xu ni]值

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键

VK_INSERT                2D INS 键

VK_DELETE              2E DEL 键

VK_HELP                   2F   HELP键

对于非小键盘上的数字键和字母键,直接在单引号中加入该键就行

比如: a 键: 'A'

1 键: '1'

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                      7E 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 键

4.         组合键的用法:(本例响应Ctrl+X键)

BOOL CMydilog::PreTranslateMessage(MSG* pMsg)

{

if (pMsg-> message == WM_KEYDOWN)

{

switch (pMsg-> wParam)

{

case VK_ESCAPE:

SetFocus ();

return TRUE;

case 'X':

if(::GetKeyState(VK_CONTROL) < 0)

MessageBox(" hello" );

return TRUE;

}

}

return CDialog::PreTranslateMessage(pMsg);

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多