如何通过wParam输出符号

时间:2013-06-05 10:08:35

标签: windows visual-c++

case WM_KEYDOWN:
    if ( !(wParam >= 'A' && wParam <= 'Z') && !(wParam >= '0' && wParam <= '9') )
    {
        cout << (char)wParam << endl;
        cout << wParam << endl;
    }

我已经过滤掉了字母数字输入,只接受符号,但我不知道如何通过wParam输出符号。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

wParam WM_KEYDOWN转换为char是不安全的,因为它可能是虚拟键代码,其中一些(如箭头键)属于一系列可打印字符。

其次,看起来你正在编写一个GUI应用程序,所以你不会看到cout的输出。

解决这两个问题后,请使用ispunct函数。

答案 1 :(得分:0)

您只是使用错误的 Windows消息。 WM_KEYDOWN报告虚拟键,而不是字符。 TranslateMessage()使用当前键盘状态和活动键盘布局将虚拟键转换为字符。状态很重要,因为如果修改键处于活动状态,Shift,Alt,Control则很重要。布局很重要,因为不同的语言将键盘键映射到不同的字符。 WM_KEYDOWN仅对快捷键击有用。像F1一样。

改为使用WM_CHAR。