GetKeyState() 是否检测到密钥是否被释放?

Does GetKeyState() detect if the key is being released?

有没有办法检测密钥是否正在使用 GetKeyState() 释放?我读到了它,它只有 2 个状态,切换 0x8000 和按下 0x01.

我想要这样的东西:

short Input(int Key, int Mode)
{
   if (Mode == KEY_RELEASE)
      if (GetKeyState(Key) & KEY_PRESS)
         //Wait for the key to be released
      else
         return GetKeyState(Key) & KEY_PRESS;
}

GetKeyState returns 有关当前输入队列(您的线程和附加线程)的关键状态的信息。您可以使用 GetKeyboardState.

获得所有键的类似信息

这两个函数应该只用于响应某些事件,你不应该一遍又一遍地轮询来检测变化。

在您控制的 windows 中检测键盘变化的最佳方法是处理 WM_KEYDOWN/UP 和 WM_CHAR 消息。

最坏的情况,使用 SetWindowsHookEx 捕获键盘事件或 window 消息。