翻译《The Old New Thing》- message-only window 可以接收哪些类型的消息?

What kind of messages can a message-only window receive? - The Old New Thinghttps://devblogs.microsoft.com/oldnewthing/20171218-00/?p=97595


        存在一种叫做 message-only window(消息专用窗口)的东西,这是一个极具误导性的名字,因为接收消息本就是窗口一直在做的事情。这就像把某个东西称为“只含水的游泳池”或“只产热的烤箱”一样。

        说极具误导性还因为它并不能接收所有消息

        “等等,这个窗口的名字说它唯一能做的事就是接收消息,而你现在却告诉我它连这都做不到!”

        message-only window 的关键在于它只接收那些专门发送或投递给它的消息。你可以用它在发送方和窗口之间建立一个私有通道。创建 message-only window 后,你可以通过调用 PostMessage 并传入其窗口句柄 (window handle) 来将消息放入窗口队列 (queue),或者通过调用 SendMessage 并传入窗口句柄来发送非排队消息。

        message-only window 的有趣之处在于它不参与广播消息 (broadcast messages)

        许多窗口消息会发送给所有顶级窗口 (top-level windows),例如 WM_QUERYENDSESSION、WM_SETTINGCHANGE、WM_DDE_INITIATE 以及任何通过 HWND_BROADCAST 发送的消息。这些消息不会被发送到 message-only window。

        在内部,message-only window 被视作一个由系统管理的、名为 HWND_MESSAGE 的公共父窗口的子窗口。这个系统管理的公共父窗口是永久不可见的,这也导致了 message-only window 同样永久不可见。这也是为什么 message-only window 对于枚举 (enumeration)
和广播 (broadcasts) 是不可见的原因:枚举和广播是针对顶级窗口执行的,但 message-only window 在内部被当作 HWND_MESSAGE 的子窗口,因此不被视为顶级窗口。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0x0007

可不可奖励我吃只毛嘴鸡 馋😋

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值