Приложение MFC и модальное диалоговое окно, отличное от MFC

Я пишу подключаемый модуль DLL Win32 для стороннего приложения MFC. DLL должна отображать модальное диалоговое окно. Когда я делаю это с помощью DialogBox () или другого простого Win32 API (например, я пытался написать свой собственный модальный цикл), главное окно приложения не перерисовывает все элементы: оно перерисовывает стандартные элементы, но не клиентская зона. Немодальные диалоги отображаются нормально.

Screenshot

Я подозреваю, что это происходит из-за того, что MFC на самом деле не имеет модальных диалогов в смысле Win32. Он может иметь только один цикл сообщений, а отдельный цикл в DialogBox () нарушает его тонкий механизм. Вот статья CodeProject , которая объясняет это. Но этой статье CodeProject уже 9 лет, так что, возможно, с тех пор все изменилось. Может ли кто-нибудь пролить свет на это? Приложение использует MFC 8 (то есть mfc80.dll ).

Обновление . Вот ссылка на исходный вопрос ; он может содержать некоторую дополнительную информацию.

Обновление 2 . Всем спасибо; Я очень ценю все советы, они, безусловно, помогают мне получить общее представление о том, как все сочетается друг с другом. Первый путь, который я собираюсь изучить, - это использование собственных «модальных» диалогов MFC. (Поскольку я делаю все это из Python, я буду использовать привязки Python для MFC, pywin32 ). Это займет некоторое время; когда он будет готов, я дополню сообщение результатами.

7
задан Community 23 May 2017 в 12:30
поделиться