Нужен ли GetMessage графический интерфейс - PullRequest
1 голос
/ 22 декабря 2010

Много лет назад я узнал, что для использования GetMessage вам нужна какая-то форма GUI.Без этого окна не создают очередь сообщений.

Меня неправильно учили?

РЕДАКТИРОВАТЬ: MSDN говорит: Поскольку система направляет сообщения в отдельные окна в приложении, поток должен создать по крайней мере одно окно, прежде чем начать цикл обработки сообщений.Кажется, меня хорошо учили, или есть еще что-то?

Ответы [ 2 ]

5 голосов
/ 22 декабря 2010

Вы путаете некоторые вещи здесь.

Прежде всего вы можете использовать GetMessage, не создавая живые окна в своей ветке.

OTOH ОС непо умолчанию создайте очередь сообщений для вновь созданного потока.Следовательно - вызовы, подобные PostThreadMessage, во вновь созданный поток могут завершиться с ошибкой.

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

Проще говоря, просто наберите PeekMessage в этой теме.

Более подробная информация здесь: http://msdn.microsoft.com/en-us/library/ms644946%28v=vs.85%29.aspx

(см. Примечания)

0 голосов
/ 22 декабря 2010

Для вызовов SendMessage и PostMessage для параметра требуется HWND. Если у вас нет окна, у вас не будет HWND, и вы не сможете получать сообщения независимо от того, есть у вас очередь сообщений или нет.

Редактировать: Я забираю это обратно. GetMessage позволяет передать параметр NULL для HWND, а PostThreadMessage отправит сообщение в очередь без HWND. PostMessage также допускает значение NULL для параметра HWND.

Я узнаю что-то новое каждый день!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...