WM_KEYDOWN消息未发送
WM_KEYDOWN message not sent
我一直在尝试追踪程序中的错误。我注意到,每当我按住向上和向左箭头键并按空格键时,我的 WndProc 永远不会收到或处理 WPARAM 为 VK_SPACE 的WM_KEYDOWN消息。
我有点好奇,所以我打开了Spy++并开始查看发送到我窗口的消息。我注意到,当我按住向左和向上箭头键并按另一个键(例如 A)时,WM_KEYDOWN(以及WM_CHAR)消息将发送到我的窗口。
但是,如果我按住向上和向左箭头键并按空格键,则空格键命中的WM_KEYDOWN消息不会发送到我的窗口。
这是什么原因呢?谁能证实这种行为?
发生这种情况是因为您的键盘正在执行所谓的重影。对于当今人们使用的大多数键盘来说,这是正常的。它被连接起来,因此生产成本要低得多,因此,这样的事情一直在发生。
基本上,当同时按下同一行/列中的三个键时,它们不能全部唯一标识,导致至少一个键无法通过。您唯一能做的就是购买防重影键盘,或重新设计控件以避免冲突。
在个人层面上,我在展示游戏前一两天就发现了这个问题,最终不得不将控件制作成 P1:SZXC 和空格以及 P2:/789 和 +。事先知道这确实是一件好事。
相关文章:
- boost::进程间消息队列引发错误
- 在线编译器中的分段C++没有打印消息
- C++错误消息*成员参考.**初学者*
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 如何通过参数抛出错误消息
- 从服务器传输到客户端的消息不会出现
- ROS2 动态消息模板
- C++秘密消息学校作业
- glad 导致 glfwSwapBuffers 返回错误消息
- C++入门 5 版:类消息和文件夹
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 如何处理从一个对象传递到另一个在C++中具有公共抽象类的对象的消息
- 如何接受 [ENTER] 键作为无效输入并发送错误消息
- 由于无效的 ValidateRgn() 子窗口不会收到WM_PAINT消息
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- 如何将 Firebase 与基于 Linux 的客户端应用配合使用,以便与服务器进行双向消息通信
- 重新定义预定义的 errno 错误消息 (E2BIG)
- Libmosquitto publish 不会将所有消息传递到 Azure IoT Hub
- 在 capnp FlatArrayMessageReader 的对齐内存缓冲区中接收 zmq 消息