我一直在尝试追踪程序中的错误。我注意到,每当我按住向上和向左箭头键并按空格键时,我的WndProc永远不会收到或处理带有WPARAM VK_SPACE的WM_KEYDOWN消息。
我有点好奇,所以我打开了Spy ++并开始查看发送到我窗口的消息。我注意到,当我按住左箭头键和向上箭头键并按下另一个键(例如A)时,WM_KEYDOWN(以及WM_CHAR)消息将被发送到我的窗口。
但如果我按住向上和向左箭头键并按空格键,则空格键命中的WM_KEYDOWN消息不会发送到我的窗口。
这是什么原因?任何人都可以证实这种行为吗?
答案 0 :(得分:2)
这是因为您的键盘正在执行所谓的ghosting。这对于今天人们使用的大多数键盘来说都是正常的。它的接线方式使得它的制作成本更低,因此,这样的事情会持续发生。
基本上,当同时按下同一行/列中的三个键时,它们不能全部被唯一标识,导致至少一个键不能通过。你唯一能做的就是买一个反重影键盘,或重新设计你的控件以避免冲突。
在个人层面上,我在发布游戏前一两天就发现了这一点,最终不得不像P1:SZXC和太空以及P2:/ 789和+那样进行控制。事先知道确实是件好事。