Сообщения Windows в коде библиотеки - PullRequest
0 голосов
/ 24 сентября 2010

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

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

Ответы [ 2 ]

0 голосов
/ 24 сентября 2010

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

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

0 голосов
/ 24 сентября 2010

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

...