2013-06-05 62 views
0
case WM_KEYDOWN: 
    if (!(wParam >= 'A' && wParam <= 'Z') && !(wParam >= '0' && wParam <= '9')) 
    { 
     cout << (char)wParam << endl; 
     cout << wParam << endl; 
    } 

我已經過濾了字母數字輸入,只接受符號,但我不知道如何通過wParam輸出符號。任何想法?如何通過wParam輸出符號

+0

請說明'輸出符號'是什麼意思 – Andrey

+0

符號如 - ,+,[,],\等。 – zzz

回答

0

您只是使用錯誤的 Windows消息。 WM_KEYDOWN報告虛擬鍵,而不是字符。 TranslateMessage()使用當前鍵盤狀態和活動鍵盤佈局將虛擬鍵翻譯爲字符。狀態非常重要,因爲如果修改鍵處於活動狀態,Shift,Alt,Control會很重要。佈局很重要,因爲不同的語言將鍵盤鍵映射到不同的字符。 WM_KEYDOWN僅用於快捷鍵擊。像F1一樣。

改爲使用WM_CHAR。

0

wParamWM_KEYDOWN轉換爲char是不安全的,因爲它可能是虛擬鍵碼,而其中一些鍵(如箭頭鍵)屬於可打印字符範圍。其次,它看起來像你正在編寫一個GUI應用程序,所以你不會看到cout的輸出。

解決了這兩個問題後,使用ispunct函數。

+0

我只是將它用於調試目的。所以,我想要的只是在控制檯窗口上顯示符號。你能告訴我如何實現這個目標嗎?謝謝。 – zzz