我想知道调用 SendMessage(哪个块)和调用 PostMessage 与 WaitForSingleObject 有什么区别。想法?
问问题
11996 次
4 回答
19
SendMessage()
如果您从 COM 调用的上下文中调用它,则可能会被拒绝,其中 COM 对象位于 STA 中(通过消息泵调度调用)。PostMessage()
不限于遵守 COM 公寓规则。
此外,PostMessage()
将消息放在窗口消息队列的末尾。SendMessage()
绕过队列。您可以在 Raymond Chen 的博客The Old New Thing上找到关于消息队列的更长讨论。
SendMessage()
我的观点是,两者之间的区别PostMessage()
远不止眼前所见。我真的建议您浏览 Raymond 的博客,因为这些年来他介绍了许多问题。
于 2011-07-21T17:13:28.657 回答
4
PostMessage
并WaitForSingleObject
允许您进行异步消息传递。您可以发送消息、执行其他操作,然后稍后再查看回复。SendMessage
是同步的,需要你等待。
于 2011-07-21T16:26:21.403 回答
3
我一直认为 SendMessage 直接调用你的 windows 过程,跳过消息队列;而 PostMessage 只是将消息添加到队列中。
于 2011-07-21T17:10:36.380 回答
2
SendMessage 是一个单一的 API 调用,因此不太容易出错。使用内置的而不是自己滚动。
于 2011-07-21T17:13:23.737 回答