【问题标题】:why do we have two messages WM_KEYUP and WM_KEYDOWN为什么我们有两条消息 WM_KEYUP 和 WM_KEYDOWN
【发布时间】:2014-10-08 01:53:27
【问题描述】:

我刚开始 MFC 编程,之前没有做过任何 UI 设计或编程。我想知道为什么有两条消息 WM_KEYUP 和 WM_KEYDOWN 是由 Windows 生成的,如果假设键盘正常,每个被按下的键肯定会被释放。

我认为只有一条消息 WM_KEYPRESSED 或其他内容就足够了,但是 windows 生成单独的消息是否有原因

谢谢

【问题讨论】:

  • 假设您想在游戏中按 W 并按住它向前走,您的 WM_KEYPRESSED 解决方案将不起作用。它需要 WM_KEYDOWN 来启动前进的“状态”,并需要 WM_KEYUP 来停止它。
  • 不要忘记按键消息也有一个重复计数器,因此当您按住一个键时,您会收到重复的按键消息,并且每次都会增加一个计数器。因此,您可以在每条重复消息上移至下一步。

标签: c++ windows visual-c++ mfc keyboard


【解决方案1】:

这样您就可以实现修饰键,例如 shift 和 control。 对于大多数键,您可以忽略WM_KEYUP,但如果键在 问题应该修改按住时按下的任何键 下来,两个都需要。

【讨论】:

    【解决方案2】:

    我曾经问过同样的问题,但答案很简单。这些只是两个独立的事件,Windows 也为您提供了响应的机会。 KEY_DOWN 或 KEY_UP 没有什么特别之处,两者都只是事件。对于大多数需求,处理 KEY_DOWN 通常更有意义,但可以肯定WM_KEYUP 有很多用途。窗口生成的消息还有很多,通常程序员不会处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 2017-06-15
      • 2012-05-25
      • 1970-01-01
      相关资源
      最近更新 更多