SendMessage发送出来的消息到底进入不进入消息队列,确切的说是有时进入,有时不进入。
1.当向本线程所建立的窗口SendMessage消息时,它只是调用窗口的消息处理过程。如下图所示,OnTimer中调用SendMessage,会直接调用到消息处理过程。

2.当一个线程向另一个线程所建立的窗口SendMessage时,该消息要添加到接收线程的消息队列,然后发送消息的线程进入等待状态,接收消息的线程处理完该消息后,由系统唤醒发送消息的线程,这时发送线程继续执行。如下图所示:窗口通过PumpMessage获取消息然后处理。

本文探讨了SendMessage函数的行为特性,特别是其是否将消息加入消息队列的问题。文中详细分析了两种情况:在同一线程内部调用与跨线程调用时的不同表现。
1221

被折叠的 条评论
为什么被折叠?



