我正在实现使用单个线程的Reactor
设计模式,用于使用Windows事件机制的异步操作。窗口通知上的信号事件
我在尝试组合我的反应器以支持Windows Notifications
(WM_CLOSE,WM_CREATE,WM_DEVICECHANGE ...)以及现有的Windows Events
时遇到问题。
因此,我的问题是: 当某个特定的窗口收到特定的通知时,是否可以指示事件?
在此先感谢。
我正在实现使用单个线程的Reactor
设计模式,用于使用Windows事件机制的异步操作。窗口通知上的信号事件
我在尝试组合我的反应器以支持Windows Notifications
(WM_CLOSE,WM_CREATE,WM_DEVICECHANGE ...)以及现有的Windows Events
时遇到问题。
因此,我的问题是: 当某个特定的窗口收到特定的通知时,是否可以指示事件?
在此先感谢。
不,您无法在接收到特定窗口消息时使Windows发出事件对象信号。您必须首先捕获消息循环中的消息,然后根据需要自行发送事件对象。
否则,重新编写消息循环以使用MsgWaitForMultipleObjects()
,以便它可以同时检查事件信号和挂起的窗口消息,然后您可以根据哪个满足每个循环迭代的等待来采取行动。只要意识到这一点,疑难杂症:
MsgWaitForMultipleObjects is a very tricky API
如果指定bWaitAll为真,你可能会发现你的应用程序不会醒来时,你期望它
在这种情况下,你会将bWaitAll
设置为false并且一切正常。
谢谢!去测试它 – CodeNinja 2015-03-09 05:50:19
你能更详细地描述你的情况吗?你在第二段遇到什么问题?你能提供你想要完成的代码示例吗? – andlabs 2015-03-08 19:02:36