| 
			BOOL CSerialPortTestDlg::PreTranslateMessage(MSG*
pMsg)  { // TODO: Add your specialized code here and/or call the base
class 
 // if(pMsg->message==WM_KEYDOWN
&&
pMsg->wParam==VK_RETURN)  // MessageBox("你按下了鍵盤上的回車鍵!"); 
 if (pMsg->message==WM_KEYDOWN) { switch (pMsg->wParam) { case VK_LEFT: AfxMessageBox("左鍵"); break; case VK_RIGHT: AfxMessageBox("右鍵"); break; case VK_UP: AfxMessageBox("上"); break; case VK_DOWN: AfxMessageBox("下"); break; case VK_SPACE: AfxMessageBox("空格"); break; } } return CDialog::PreTranslateMessage(pMsg); } 
| 
| 
| 
首先,簡(jiǎn)介一下鍵盤消息: 
(1)系統(tǒng)消息:(系統(tǒng)鍵Alt,F(xiàn)10等),由系統(tǒng)內(nèi)部處理 
WM_SYSKEYDOWN 
WM_SYSKEYUP 
WM_SYSCHAR 
(2)非系統(tǒng)消息: 
WM_KEYDOWN 
WM_KEYUP 
WM_CHAR 
二、添加消息(一般WM_KEYDOWN),在消息響應(yīng)函數(shù) 
OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
有三個(gè)變量,nChar這是虛擬鍵代碼,另外兩個(gè)不常用,用時(shí)參看MSDN。 
如果要響應(yīng)組合鍵,可以用GetAsyncKeyState()檢測(cè)按鍵狀態(tài) 
如:case
VK_UP:
 if
(GetAsyncKeyState(VK_LSHIFT))
 {
 // 左shift+up
 }
 break;
 
三,下面介紹虛擬鍵代碼: 
0~9,A~Z
為ASCII碼,(去除ASCII碼前的0),如A為65,不是065; 
其它的為VK碼,如下所示: 
VK值列表   VK_CANCEL  
Ctrl+Break
 VK_TAB        
Tab
 VK_RETURN  
Enter
 VK_SHIFT    
Shift
 VK_CONTROL  
Ctrl
 VK_MENU        
Alt
 VK_LBUTTON 01
鼠標(biāo)左鍵
 VK_RBUTTON 02
鼠標(biāo)右鍵
 VK_CANCEL    03
用于執(zhí)行Ctrl+C或Ctrl+Break
 VK_MBUTTON 04
鼠標(biāo)中鍵
 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
Arl鍵
 VK_PAUSE                  
13
Pause鍵
 VK_CAPITAL 14
Capslock鍵
 VK_ESCAPE                  
1B Ese鍵
 VK_SPACE                  
20
SpaceBar鍵
 VK_PRIOR
 |  |  |  |