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

当一个窗口被破坏而仍然有消息待处理时会发生什么?

请考虑以下情形:

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

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

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

这在内部如何运作?

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

点赞