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).
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |