case WM_KEYDOWN:
if (!(wParam >= 'A' && wParam <= 'Z') && !(wParam >= '0' && wParam <= '9'))
{
cout << (char)wParam << endl;
cout << wParam << endl;
}
我已經過濾了字母數字輸入,只接受符號,但我不知道如何通過wParam輸出符號。任何想法?如何通過wParam輸出符號
case WM_KEYDOWN:
if (!(wParam >= 'A' && wParam <= 'Z') && !(wParam >= '0' && wParam <= '9'))
{
cout << (char)wParam << endl;
cout << wParam << endl;
}
我已經過濾了字母數字輸入,只接受符號,但我不知道如何通過wParam輸出符號。任何想法?如何通過wParam輸出符號
您只是使用錯誤的 Windows消息。 WM_KEYDOWN報告虛擬鍵,而不是字符。 TranslateMessage()使用當前鍵盤狀態和活動鍵盤佈局將虛擬鍵翻譯爲字符。狀態非常重要,因爲如果修改鍵處於活動狀態,Shift,Alt,Control會很重要。佈局很重要,因爲不同的語言將鍵盤鍵映射到不同的字符。 WM_KEYDOWN僅用於快捷鍵擊。像F1一樣。
改爲使用WM_CHAR。
將wParam
的WM_KEYDOWN
轉換爲char是不安全的,因爲它可能是虛擬鍵碼,而其中一些鍵(如箭頭鍵)屬於可打印字符範圍。其次,它看起來像你正在編寫一個GUI應用程序,所以你不會看到cout
的輸出。
解決了這兩個問題後,使用ispunct
函數。
我只是將它用於調試目的。所以,我想要的只是在控制檯窗口上顯示符號。你能告訴我如何實現這個目標嗎?謝謝。 – zzz
請說明'輸出符號'是什麼意思 – Andrey
符號如 - ,+,[,],\等。 – zzz