1

我一直在试图找出我的程序中的一个错误。我注意到,每当我按住向上和向左箭头键并按空格键时,我的 WndProc 永远不会接收或处理 WPARAM 为 VK_SPACE 的 WM_KEYDOWN 消息。

我有点好奇,所以我打开了 Spy++ 并开始查看发送到我窗口的消息。我注意到,当我按住向左和向上箭头键并按另一个键时,比如 A,WM_KEYDOWN(以及 WM_CHAR)消息被发送到我的窗口。

但是,如果我按住向上和向左箭头键并按空格键,则不会将空格键命中的 WM_KEYDOWN 消息发送到我的窗口。

这是什么原因?谁能确认这种行为?

4

1 回答 1

2

发生这种情况是因为您的键盘正在执行所谓的重影。这对于当今人们使用的大多数键盘来说是正常的。它被连接起来,因此生产起来要便宜得多,因此,这样的事情总是会发生。

基本上当同时按下同一行/列中的三个键时,它们不能都被唯一标识,导致至少一个不通过。您唯一能做的就是购买防重影键盘,或重新设计控件以避免冲突。

在个人层面上,我在展示我的游戏前一两天发现了这一点,最终不得不将控件设置为 P1:SZXC 和空间以及 P2:/789 和 +。提前知道真的是一件好事。

于 2012-05-17T19:32:55.540 回答