2010-09-24 45 views
0

我正在将一个库移植到Windows。在一个函数中,我需要阻止消息到达WM_DEVICECHANGEWindows消息库代码

有什么选择可以做到这一点?由于我的代码驻留在一个库中,因此我对当前的设置没有任何信息(因此,如果它是Console应用程序,常规GUI应用程序,如果我的代码正在产生的线程中运行,等等) 。因此,等待特定消息到达的最佳方式是什么?

回答

0

阻止和接收Windows消息是互不兼容的。您通过抽取消息循环来获取消息。既然你不能依赖这个应用程序来抽一个,那么你就需要自己做这个。

您将需要创建一个线程。在该线程中创建一个隐藏窗口,然后运行标准消息循环。该窗口的窗口过程可以看到WM_DEVICECHANGE消息。它可以在单独的线程内部运行的限制内完成它需要做的事情。就像设置一个事件来表示函数应该停止阻塞一样。

0

该消息可能是使用BroadcastSystemMessage()发送的。你可以创建一个隐藏的顶级窗口,它的窗口过程可能会得到这个消息。我不确定;但那是我第一次尝试。