我想知道调用SendMessage(哪些块)和调用PostMessage以及WaitForSingleObject之间的区别。 想法?
答案 0 :(得分:18)
SendMessage()
,其中COM对象位于STA中(通过消息泵调用调用)。 PostMessage()
不限于遵守COM公寓规则。
此外,PostMessage()
将消息放在窗口消息队列的末尾。 SendMessage()
绕过队列。您可以在Raymond Chen的博客The Old New Thing上找到关于消息队列的更长时间的讨论。
我的观点是,SendMessage()
和PostMessage()
之间的差异远远超过了眼睛。我真的建议浏览雷蒙德的博客,因为他已经涵盖了多年来的许多问题。
答案 1 :(得分:4)
PostMessage
和WaitForSingleObject
允许您进行异步消息传递。您可以发送消息,执行其他操作,稍后再回来查看回复。 SendMessage
是同步的,需要您等待。
答案 2 :(得分:3)
我一直认为SendMessage直接调用你的windows程序,跳过消息队列;而PostMessage只是将消息添加到队列中。
答案 3 :(得分:2)
SendMessage是一个单独的API调用,因此不容易出错。使用内置而不是自己滚动。