2011-01-22 62 views
0

我使用消息队列(Windows提供),以帮助多个线程在我的程序进行通信。但是,我需要立即向我的程序中的所有主题发送消息。有没有什么功能可以做到这一点?是否可以向所有主题发送消息?

+0

为什么?它们不能全部在同一时刻开始处理,那么调用PostThreadMessage N次会出现什么问题? – Tergiver 2011-01-22 18:47:05

+0

我有时会有可变数量的线程,因此找出将它发送给哪个线程将是一件麻烦事。 – Mark 2011-01-22 18:51:39

回答

1

平原线程消息(无窗)在Windows中是不可靠的---有下,他们得到吞噬得无影无踪,没有你的线程得到一个机会来处理这些情况。因此,我希望为消息目标设置每个线程的顶级窗口,因为窗口目标消息总是由该窗口的窗口过程处理。如果您不需要该线程的可见窗口,则可以将其设置为仅限消息的窗口(其父项为HWND_MESSAGE)。

一旦你有每个线程的窗口,你只需枚举EnumWindowsEnumChildWindows的窗口,并发送消息到你想要的。或者,您可以保留一个线程消息窗口列表,并向每个窗口发送消息。没有简单的方法将消息发送给进程中的所有线程。

相关问题