2010-09-24 3 views
0

Я переношу библиотеку в Windows. В функции мне нужно заблокировать при поступлении сообщения WM_DEVICECHANGE.Сообщения Windows в библиотечном коде

Какие варианты доступны для этого? Поскольку мой код находится в библиотеке, у меня есть небольшая информация о текущей настройке (так что если это приложение консоли, обычное графическое приложение, если мой код запускается в порожденном потоке и т. Д.), , Поэтому, что лучше всего ждать прибытия конкретного сообщения?

ответ

0

Блокировка и получение сообщений Windows несовместимы друг с другом. Вы получаете сообщения, перекачивая цикл сообщения. Поскольку вы не можете полагаться на приложение, перекачивающее его, вам нужно будет сделать это самостоятельно.

Вам нужно будет создать поток. Создайте скрытое окно в этом потоке, затем запустите стандартный цикл сообщений. Процедура окна для этого окна может видеть сообщение WM_DEVICECHANGE. Он может делать то, что когда-либо ему нужно делать, в рамках ограничений, выполняемых внутри отдельного потока. Подобно настройке события, чтобы сигнализировать о том, что функция должна прекратить блокировку.

0

Сообщение, вероятно, отправлено с использованием BroadcastSystemMessage(). Вы можете создать скрытое окно верхнего уровня, и его окно proc, вероятно, получит это сообщение. Я не уверен; но это то, что я постараюсь первым.

Смежные вопросы