2015-03-08 55 views
0

我正在实现使用单个线程的Reactor设计模式,用于使用Windows事件机制的异步操作。窗口通知上的信号事件

我在尝试组合我的反应器以支持Windows Notifications(WM_CLOSE,WM_CREATE,WM_DEVICECHANGE ...)以及现有的Windows Events时遇到问题。

因此,我的问题是: 当某个特定的窗口收到特定的通知时,是否可以指示事件?

在此先感谢。

+0

你能更详细地描述你的情况吗?你在第二段遇到什么问题?你能提供你想要完成的代码示例吗? – andlabs 2015-03-08 19:02:36

回答

1

不,您无法在接收到特定窗口消息时使Windows发出事件对象信号。您必须首先捕获消息循环中的消息,然后根据需要自行发送事件对象。

否则,重新编写消息循环以使用MsgWaitForMultipleObjects(),以便它可以同时检查事件信号和挂起的窗口消息,然后您可以根据哪个满足每个循环迭代的等待来采取行动。只要意识到这一点,疑难杂症:

MsgWaitForMultipleObjects is a very tricky API

如果指定bWaitAll为真,你可能会发现你的应用程序不会醒来时,你期望它

在这种情况下,你会将bWaitAll设置为false并且一切正常。

+0

谢谢!去测试它 – CodeNinja 2015-03-09 05:50:19