在dialog中是不能響應WM_KEYDOWN的如果要響應的話可以過載BOOLCKeseDlg::PreTranslateMessage(MSG*pMsg)這個函式在MFC(MicrosoftFoundationClass)對響應訊息進行了封裝,可以透過過載虛擬函式PreTranslateMessage()對所關心的訊息進行擷取與響應:以下對擷取與響應鍵盤Enter訊息的擷取與響應這是對話方塊的響應鍵盤Enter訊息方式:BOOLC**Dlg::PreTranslateMessage(MSG*pMsg){//TODO:在此新增專用程式碼和/或呼叫基類//判斷是否為鍵盤訊息if(WM_KEYFIRST<=pMsg->message&&pMsg->message<=WM_KEYLAST){//判斷是否按下鍵盤Enter鍵if(pMsg->wParam==VK_RETURN){//DoanythingwhatyouwanttoreturnTRUE;}}returnCDialog::PreTranslateMessage(pMsg);}這是View檢視類響應鍵盤Enter訊息的方式:BOOLC**View::PreTranslateMessage(MSG*pMsg){ if(WM_KEYFIRST<=pMsg->message&&pMsg->message<=WM_KEYLAST) { if(pMsg->wParam==VK_RETURN) {//DoanythingyouwantherereturnTRUE;} } returnCFormView::PreTranslateMessage(pMsg);}
在dialog中是不能響應WM_KEYDOWN的如果要響應的話可以過載BOOLCKeseDlg::PreTranslateMessage(MSG*pMsg)這個函式在MFC(MicrosoftFoundationClass)對響應訊息進行了封裝,可以透過過載虛擬函式PreTranslateMessage()對所關心的訊息進行擷取與響應:以下對擷取與響應鍵盤Enter訊息的擷取與響應這是對話方塊的響應鍵盤Enter訊息方式:BOOLC**Dlg::PreTranslateMessage(MSG*pMsg){//TODO:在此新增專用程式碼和/或呼叫基類//判斷是否為鍵盤訊息if(WM_KEYFIRST<=pMsg->message&&pMsg->message<=WM_KEYLAST){//判斷是否按下鍵盤Enter鍵if(pMsg->wParam==VK_RETURN){//DoanythingwhatyouwanttoreturnTRUE;}}returnCDialog::PreTranslateMessage(pMsg);}這是View檢視類響應鍵盤Enter訊息的方式:BOOLC**View::PreTranslateMessage(MSG*pMsg){ if(WM_KEYFIRST<=pMsg->message&&pMsg->message<=WM_KEYLAST) { if(pMsg->wParam==VK_RETURN) {//DoanythingyouwantherereturnTRUE;} } returnCFormView::PreTranslateMessage(pMsg);}