Message-only windows
Jacksing

Message-Only Windows 是一个非常特殊的窗口类型,而且名字也具有很强的误导性。但是在了解了之后就会知道,怪不得这个窗口类型怎么好像没见到有人在用。

消息循环的一点思考中,笔者提到了一个通用的消息循环模块,这个模块的设计初衷是为了解决项目中存在的多个消息循环的问题。刚开始做的时候意识到,标准的 Windows 窗口会额外处理很多不同的事件,所以希望能有一个替代的方案,尽可能地无视无关的消息。翻阅了文档之后,找到了这个 Message-Only Windows。但是,深入了解一下后发现,这个窗口类型非常误导人,它完全不适用我们的场景。

微软在文档中对这个窗口做了个介绍。简单地说,Message-Only Windows 是一个不可见的窗口,它不会显示在屏幕上,也不会接收用户输入,也不会被其他窗口捕获焦点。它存在的唯一一个目的就是接收和处理消息。初步看来,这貌似是一个很符合我们要求的窗口类型。不过,其存在着一大堆的限制,以至于我们没法使用。

Message-Only Windows 是 HWND_MESSAGE 的子窗口,挂载在它的下面会导致窗口无法接收到任何以 HWND_BROADCAST 发送的系统广播消息,或者其他发送到 top-level windows 上的窗口消息。这就意味着,很多系统的状态变更事件,我们都没法知道了。

这个窗口存在的意义就是为了收发私有消息。所以对于一个普通的应用而言,它没有什么太大的意义。

Message-Only Windows

What kind of messages can a message-only window receive?

  • 本文标题:Message-only windows
  • 本文作者:Jacksing
  • 创建时间:2024-04-26 13:48:27
  • 本文链接:https://wzzzx.github.io/Windows/message-only-windows/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论