Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Чем SendMessage() отличается от PostMessage()? C++, WinAPI

Demon On Wheels Просветленный (30733), закрыт 11 лет назад
Дополнен 11 лет назад
SendMessage() вызывает оконную процедуру на прямую минуя очередь.
PostMessage() ставит сообщение в очередь.
Лучший ответ
Анатолий Хачеёбов Профи (538) 11 лет назад
после СендМессадж (тупой мэйл ру - не даёт с маленьким рейтингом латиницей писать) управление сразу передаётся оконному обработчику сообщений (ну, минус прерывания и подобноее) . То есть, сообщение фактически обрабатывается сразу.
А ПостМессадж только помещает сообщение в очередь, а уж когда обработчик обработает это сообщение, хз, когда "руки дойдут".
Остальные ответы
Physical Memmory Мастер (1486) 11 лет назад
вроде postmessage не ждет возвращения результата обработки сообщения потоком
ia Мастер (1633) 11 лет назад
ага, разница в приоритете
Ирина Х-С Мыслитель (8902) 11 лет назад
SendMessage напрямую вызывает оконную процедуру только если отправляющий тред совпадает с тредом, который владеет окном, в которое отправляется сообщение. Если это разные треды, то обработка конечно будет без очереди, но принимающий тред все равно должен вызвать GetMessage/PeekMessage чтобы получить сообщение. Если он этого не сделает, то SendMessage так и повиснет в ожидании
Похожие вопросы