0

在你看来,我可能仍然是一个自杀者,或者更合理地说,我只是一个想要不惜一切代价学习如何经营一家全球性大公司的孩子:L

试图在窗口内制作一个文本输入控制台框,我使用了这个:

textString.insert(cursorPosition,1,(char)wParam);
cursorPosition+=1;

同时从窗口的 WM_CHAR 消息中获取wParam 。当我输入一些东西时,我得到了 gobbledygook!每个按下的键 3 个字母,通常应该在大写字母本身或一些奇怪的 ASCII 之间。例如:

一个-> AA

l -> LLL

\ -> Ü\Ü

shift 键-> □(空白)有一堆空格

据我所知,看起来文本不仅获得了 WM_CHAR,还获得了 WM_KEYDOWN 和 WM_KEYUP。我将代码放在消息处理程序中调用的类中:

case WM_CHAR:
myTextClass(wParam);
    break;

有什么问题?=_=''

如果需要,我将发布代码的其他部分。

编辑:好的,请稍等。直观地说,在其他消息解决问题之前移动 WM_CHAR 处理,但我仍然很好奇为什么它会做所有这些事情,如果不是谁来回复 xD 的问题

4

1 回答 1

3

当你的 switch 语句中的前一个case缺少break关键字时,就会出现这种情况。所以它属于 WM_CHAR 案例。

在处理 WM_CHAR 时,像您一样使用break 。这样它就会被传递给 DefWindowProc() 而你真的打算返回,因为你已经处理了消息。

猜猜,你没有发布足够的代码,但鞋子合脚。

于 2012-11-03T00:29:21.817 回答