gpt4 book ai didi

windows - 窗口消息是 "Reliable"吗?

转载 作者:可可西里 更新时间:2023-11-01 13:41:38 24 4
gpt4 key购买 nike

这是一个关于 Windows 编程的一般问题:

Window 消息“可靠”吗?

例如示例(这些只是示例):

  • 您能确定 WM_MOUSEMOVE 会在光标进入屏幕之前发生吗?

  • 您能否确定插入设备后会收到一条WM_DEVICECHANGE消息?

  • 您能否确定如果您的窗口失去焦点,您将收到一条 WM_KILLFOCUS 消息?

或者,换句话说:您能否确定您会在适当的时间收到适当的消息,或者您是否总是必须进行防御性编码以防万一,不知何故,您可能会因为没有明显记录的原因而错过一条消息?


示例:

  • 保证 (AFAIK) 文件系统过滤器驱动程序不会“错过”文件操作或更改通知。

  • 相比之下,保证ReadDirectoryChangesW不会错过通知。事实上,如果缓冲区溢出,它可能会错过很多。

备注:

不是在谈论针对对手的情况(例如有人劫持您的窗口过程或安装钩子(Hook)/过滤器);那几乎会使任何保证失效。我只是问一些晦涩难懂的情况,即使没有人故意表示任何坏事,也可能真正发生,比如一些随机缓冲区溢出,如果有人使用 SendInput 等,假设你有控制权您自己的代码

最佳答案

不,您不能确定给定的消息将按特定顺序传送。以下是为什么不这样做的几个原因

  • 消息可以编程方式发送,这可用于模拟“不可能”的场景,例如 WM_KEYUP 后跟 WM_KEYDOWN
  • 另一个例程可以对您的窗口进行子类化并有选择地拦截消息而不将它们发送到您的 WNDPROC

最好围绕顺序很重要的任何场景进行防御性编码

关于windows - 窗口消息是 "Reliable"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6114510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com