VC下使CDialog响应键盘按键(Response of Key)
需要重载PreTranslateMessage函数
具体实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
BOOL CMyDlg::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class //按键相应 if (pMsg->message == WM_KEYDOWN) { if (pMsg->wParam == VK_DOWN) { //向下键按下 } else if (pMsg->wParam == VK_RIGHT) { //向右键按下 } else if (pMsg->wParam == VK_LEFT) { //向左键按下 } else if (pMsg->wParam == VK_UP) { //向上键按下 } else if(pMsg->wParam == VK_SHIFT) { //VK_LSHIFT为左Shift键按下 //Shift键按下 } else if(pMsg->wParam == VK_CONTROL) { //Ctrl键按下 } else if(pMsg->wParam>=VK_NUMPAD0 && pMsg->wParam<=VK_NUMPAD9) { //小键盘数字键按下 } else if(pMsg->wParam>=0x30 && pMsg->wParam<=0x39) { //数字键按下(我记得不能使用VK_0) } else if(pMsg->wParam>=0x41 && pMsg->wParam<=0x5A) { //键盘字母键按下(我记得不能使用VK_A) } else if(pMsg->wParam == VK_BACK) { //退格键按下 } else if(pMsg->wParam == VK_DELETE) { //删除键按下 } else if(pMsg->wParam == VK_F1) { //F1键按下 } //return true; //使消息不再进行处理 } if (pMsg->message == WM_KEYUP) { if(pMsg->wParam == VK_SHIFT) { //Shift键弹起 } else if(pMsg->wParam == VK_CONTROL) { //Ctrl键弹起 } //return true; //使消息不再进行处理 } return CDialog::PreTranslateMessage(pMsg); } |
Trackback from your site.