Здравствуйте shilon, Вы писали:
S>есть приложение с окошком и поток который генерирует PostMessage на окно,
S>проблема: S> если окно тянуть мышкой за Caption то сообщения не приходят ! (PostMessage не показывает ошибку)
Сообщения не приходят, потому что они обрабатываются модальным циклом обработки сообщений, в который заходит DefWindowProc на все время перетаскивания окна.
S>что делать ?
Вариант 1. Использовать SendNotifyMessage вместо PostMessage.
Вариант 2. Поставить хук WH_GETMESSAGE на этот поток и ловить сообщения там.
Здравствуйте Alex Fedotov, Вы писали:
AF>Здравствуйте shilon, Вы писали:
S>>есть приложение с окошком и поток который генерирует PostMessage на окно,
S>>проблема: S>> если окно тянуть мышкой за Caption то сообщения не приходят ! (PostMessage не показывает ошибку)
AF>Сообщения не приходят, потому что они обрабатываются модальным циклом обработки сообщений, в который заходит DefWindowProc на все время перетаскивания окна.
S>>что делать ?
AF>Вариант 1. Использовать SendNotifyMessage вместо PostMessage. AF>Вариант 2. Поставить хук WH_GETMESSAGE на этот поток и ловить сообщения там.
Работает, вот только почему имено SendNotifyMessage ? потамучто SendMessage тоже пашет ( доходят сообщения).
Мое окно это созданный PropertySheet (немодальн).
я раньше пытался юзал SendMessage , а соощения ловил в WinMain while { getMessage () } а потом перешол на PostMessage т.к. с ПропШитом это не работало,
теперь я поставил Хук на Диалоговую процедуру ПропШита и туда СэндМесс доходит...
Здравствуйте shilon, Вы писали:
AF>>Вариант 1. Использовать SendNotifyMessage вместо PostMessage. AF>>Вариант 2. Поставить хук WH_GETMESSAGE на этот поток и ловить сообщения там.
S>Работает, вот только почему имено SendNotifyMessage ? потамучто SendMessage тоже пашет ( доходят сообщения).
Потому что SendNotifyMessage является более точным эквивалентом PostMessage в данном случае: она возвращает управление сразу же после того, как сообщение отправлено, в то время как SendMessage дожидается пока сообщение не будет обработано. Поскольку в оригинале использовалась PostMessage, я предложил вариант, который работает, но в то же время привностит минимум изменений. Если поведение SendMessage устраивает, можно пользоваться и ей.