Как именно Windows решает, что SendMessage должен вернуться, то есть как она определяет, что принимающий поток завершил обработку отправленного сообщения?
Подробный сценарий: у меня есть поток A, использующий SendMessage для отправки потока в поток B. Очевидно, что SendMessage не возвращается, пока поток B не завершит обработку сообщения. Поток B открывает диалоговое окно и начинает закачивать сообщения. В моем сценарии в очереди есть сообщение WM_KILLFOCUS, которое перекачивается потоком B. Результатом является сообщение WM_COMMAND в потоке B. Поток B передает это сообщение WM_COMMAND процессу окна по умолчанию. Когда это происходит, SendMessage возвращается обратно в поток A, даже если исходное сообщение еще не закончило обработку! Что здесь происходит? Похоже, что процесс окна по умолчанию каким-то образом сбивает окна с толку, заставляя думать, что исходное отправленное сообщение завершено.
Итак, существуют ли известные сценарии, в которых закачка сообщений и вызов процедуры окна по умолчанию могут заставить SendMessage вернуться?
Спасибо! Фил