【问题标题】:Necessity of testing key value before calling IsDialogMessage在调用 IsDialogMessage 之前测试键值的必要性
【发布时间】:2021-12-03 21:02:30
【问题描述】:

我见过several code examples 在调用IsDialogMessage 之前测试消息的值以确定它在WM_KEYFIRST 和WM_KEYLAST 之间。

我想知道这在技术上是否有必要。 IsDialogMessage 本身不会这样做吗?或者在调用函数之前测试值是否更有效?

【问题讨论】:

  • IsDialogMessage 至少处理了一条我知道的非关键消息 (WM_LBUTTONDOWN),所以这似乎是错误的。

标签: c++ windows winapi dialog message-loop


【解决方案1】:

在使用 GetMessage 和 PeekMessage 函数时,使用 WM_KEYFIRST 和 WM_KEYLAST 消息过滤键盘消息。

当 IsDialogMessage 处理消息时,它会检查键盘消息并将其转换为相应对话框的选择。

就我而言,调用 IsDialogMessage 之前没有必要测试键值。

关于IsDialogMessageA的更多详细信息,我建议你可以参考文档:Why do we need IsDialogMessage at all?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-12
    • 2016-11-27
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多