2010-09-24 47 views
0

我正在將一個庫移植到Windows。在一個函數中,我需要阻止消息到達WM_DEVICECHANGEWindows消息庫代碼

有什麼選擇可以做到這一點?由於我的代碼駐留在一個庫中,因此我對當前的設置沒有任何信息(因此,如果它是Console應用程序,常規GUI應用程序,如果我的代碼正在產生的線程中運行,等等) 。因此,等待特定消息到達的最佳方式是什麼?

回答

0

阻止和接收Windows消息是互不兼容的。您通過抽取消息循環來獲取消息。既然你不能依賴這個應用程序來抽一個,那麼你就需要自己做這個。

您將需要創建一個線程。在該線程中創建一個隱藏窗口,然後運行標準消息循環。該窗口的窗口過程可以看到WM_DEVICECHANGE消息。它可以在單獨的線程內部運行的限制內完成它需要做的事情。就像設置一個事件來表示函數應該停止阻塞一樣。

0

該消息可能是使用BroadcastSystemMessage()發送的。你可以創建一個隱藏的頂級窗口,它的窗口過程可能會得到這個消息。我不確定;但那是我第一次嘗試。