c - 只响应第一个 WM_KEYDOWN 通知?

标签 c windows winapi notifications

Win32 应用程序如何只响应第一个 WM_KEYDOWN 通知? MSDN 文档声称第 30 位“指定先前的 key 状态。如果在发送消息之前 key 已关闭,则值为 1,如果 key 已启动,则值为零。”但在我的 WndProc 中,第 30 位始终为 0。

case WM_KEYDOWN:
    // ToDo - stop multiple notifications for repeating keys
    printf("WM_KEYDOWN %i %i", wParam, lParam & 30);
    return 0;

lParam & 30 是不是错误的请求方式?我做错了什么吗?

最佳答案

要测试位 30,不要与 30 进行 AND,而是与 1 << 30 进行 AND。

const bool isBitSet = lParam & (1 << 30);

关于c - 只响应第一个 WM_KEYDOWN 通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1362799/

相关文章:

c - 尽管 undefined variable 但不增加

c - 通用堆栈实现中的空指针(纯 C)

c - 尝试将随机生成的 float 存储在数组中。但无法理解为什么数组采用垃圾值

windows - 为桌面安装了 docker。我在设置中找不到共享文件夹选项

c - OpenSSL random - 使用 ENGINE API 设置随机数,正确的方法是什么?

windows - PostgreSQL 数据库服务

windows - 有没有一种简单的方法可以从嵌套的批处理脚本中捕获错误代码 (%errorlevel%)?

c# - 从封闭源代码的第三方 Win32 应用程序中的窗口捕获数据

c++ - 用于以编程方式更改输入语言的 Win API

c++ - Windows API - 初学者帮助