Я пишу подключаемую библиотеку Win32 для стороннего приложения MFC.DLL должна отображать модальное диалоговое окно.Когда я делаю это, используя DialogBox()
или другой простой Win32 API (например, я пытался написать свой собственный модальный цикл), окно основного приложения перерисовывает не все элементы: оно перерисовывает стандартные элементы, но не клиентскую область.Немодальные диалоги отображаются очень хорошо.
Я подозреваю, что это происходит, потому что MFC на самом деле не имеет модальных диалогов в смысле Win32.У него может быть только один цикл сообщений, а отдельный цикл в DialogBox()
нарушает работу его тонкого механизма.Вот статья CodeProject , которая объясняет это.Но этой статье CodeProject 9 лет, так что, возможно, с тех пор все изменилось.Может ли кто-нибудь пролить свет на это?Приложение использует MFC 8 (т.е. mfc80.dll
).
Обновление .Вот ссылка на оригинальный вопрос ;может содержать некоторую дополнительную информацию.
Обновление 2 .Спасибо всем;Я действительно ценю все советы, это, безусловно, помогает мне получить общее представление о том, как все складывается вместе.Первый путь, который я собираюсь исследовать, - это использовать «модальные» диалоги MFC.(Поскольку я делаю все это из Python, я буду использовать привязки Python для MFC, pywin32
).Это займет некоторое время;когда он будет готов, я обновлю сообщение с результатами.