Windows消息有多强大?

时间:2011-03-16 13:54:58

标签: c++ winapi

如果我使用PostMessage对消息进行排队(并且它返回true)我可以确定最终窗口将处理消息,除非发生一些灾难性事件吗?(无论如何都会使程序崩溃)

2 个答案:

答案 0 :(得分:6)

发布后的消息不会从队列中消失。

我们的一个产品是Windows服务,它使用Windows消息在线程之间进行通信,并且它依赖于它们。到目前为止,我们看到的唯一问题是,如果你发布得太快,队列就会填满,并且在有人开始排空队列之前不接受更多的消息。

答案 1 :(得分:4)

如果对PostMessage()的调用成功,您可以确定该消息将在队列中。

如果接收队列已满,

PostMessage()将失败。 MSDN说:

  

发布的限额为10,000   每个消息队列的消息。这个限制   应该足够大。如果你的   应用程序超出限制,它   应该重新设计以避免   消耗如此多的系统资源。至   调整此限制,修改   以下注册表项。

您无法确定是否会处理发布的消息,因为由其他应用决定是否要提取其消息队列。

这有点迂腐,因为实际上一个不会排队的应用程序永远不会被任何人通过自然选择过程运行!