Вот проблема: основной поток GUI выполняет SendMessage в другой поток GUI (да, есть несколько потоков GUI, и, к сожалению, это не может измениться).Когда этот второй поток GUI получает SendMessage, он может решить отобразить окно сообщения.Иногда MessageBox «замораживает» все приложение.
В частности, отображается окно сообщения, но весь графический интерфейс пользователя зависает (пользовательский ввод нигде не работает).
С помощью отладчика я проверил, что второй поток GUI вращается в функции DialogBox2 (), определенной в user32.dll.В разборке я вижу, что выполняется насос сообщений (я вижу, что вызывается IsDialogMessage / TranslateMessage / DispatchMessage).Используя spy ++, я не вижу сообщений, обрабатываемых для диалогового окна сообщения.Я вижу, что сообщения обрабатываются в главном окне графического интерфейса пользователя (например, WM_SETCURSOR, хотя я не думаю, что они обрабатываются, поскольку я считаю, что SendMessage не выполняет обработчик сообщений).
Второй поток выполняет кодэто часть DLL расширения MFC, если это имеет значение.
Я пытался использовать AfxMessageBox () / CWnd :: MessageBox / :: MessageBox (родительское окно NULL, ...).У всех одна и та же проблема.
Кто-нибудь видел что-нибудь подобное раньше?
Спасибо, Андрей