Этот вопрос возник в моем сознании после прочтения этой статьи: http://www.codeproject.com/Articles/3911/The-singular-non-modality-of-MFC-modal-dialogs. Он упоминает, что модальное диалоговое окно в MFC не является строго модальным, но реализовано как немодальное диалоговое окно (внутренне) с наворотами, чтобы заставить его вести себя как модальное.
В частности, он говорит:
Механизм маршрутизации команд MFC использует комбинацию карт сообщений
и виртуальные функции для достижения того, что он делает, и настоящий модальный диалог
полностью разрушит этот механизм, потому что тогда модальный цикл сообщений
управляется за пределами механизма маршрутизации команд MFC
Может ли кто-нибудь объяснить это утверждение? Пример того, что пошло бы не так, если бы они попытались реализовать действительно модальный диалог, очень многое прояснит.
Модальное диалоговое окно останавливает ваш цикл сообщений, но все равно должен быть цикл сообщений для обработки событий для диалога. Таким образом, модальное диалоговое окно просто немодальное диалоговое окно со своим собственным внутренним циклом сообщений.
Других решений пока нет …