加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 已销毁的窗口的待处理消息会发生什么?

发布时间:2020-12-14 05:36:28 所属栏目:Windows 来源:网络整理
导读:当一个窗口被破坏而仍然有消息待处理时会发生什么? 请考虑以下情形: 有三个线程,A,B和C.线程C拥有一个窗口. 线程A和B使用SendMessage将消息发布到窗口.来自A的消息首先到达.当C正在处理来自A的消息时,它会使用DestroyWindow销毁它的窗口. 线程B的消息会发
当一个窗口被破坏而仍然有消息待处理时会发生什么?

请考虑以下情形:

有三个线程,A,B和C.线程C拥有一个窗口.

线程A和B使用SendMessage将消息发布到窗口.来自A的消息首先到达.当C正在处理来自A的消息时,它会使用DestroyWindow销毁它的窗口.

线程B的消息会发生什么?线程B对SendMessage的调用是否返回?

这在内部如何运作?

解决方法

根据 MSDN,DestroyWindow“[…],刷新线程消息队列,[…]”.我不确定这是否意味着处理消息或倾倒它们,所以我试过了.事实证明是后者:所有待处理的已发布消息都将从队列中删除并被忽略.对于非排队消息:在我的测试中,返回挂起的SendMessage调用,并将最后一个错误设置为ERROR_INVALID_PARAMETER – 87(0x57).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读