对于已销毁的窗口,待处理消息会发生什么?

时间:2012-06-26 08:12:54

标签: windows message

当一个窗口被销毁时,如果还有待处理的消息,会发生什么?

考虑以下情况:

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

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

来自主题B的消息会怎样?线程B对SendMessage的调用是否会返回?

这如何在内部发挥作用?

1 个答案:

答案 0 :(得分:1)

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