У меня есть главное окно, а затем пользователь может «всплывать» один из фрейма в приложении, чтобы он плавал, а не содержался в главном окне. Существует несколько фреймов, которые могут быть вырезаны, так что в заданное время может быть три окна WS_POPUP.Отключить все окна верхнего уровня (WS_POPUP) при показе модального диалога
Проблема в том, когда я хочу показать модальное диалоговое окно, я могу только отключить один из них, используя параметр в функции DoModal. Как отключить все окна верхнего уровня с помощью DoModal? Я не могу просто отключить окна перед показом модальных данных, а затем включить их обратно, потому что может быть несколько цепочечных модальных диалогов (один модальный диалог открывает еще один модальный диалог).
Предоставляет ли API способ сделать что-то подобное? Я искал это в течение двух часов и не могу найти достаточно хорошее решение. Я использую комбинацию MFC, WTL и ATL.
Заранее благодарен!
Это не так, как работают диалоги. Вы должны использовать EnableWindow() явно для достижения аналогичного эффекта. Но нет, это неинтуитивно для любого пользователя. –
@JanS: модальный диалог ** принадлежит ** его владельцем. Нет отношений между дочерним и родительским. Модальный диалог не отключает братьев и сестер, например. другие принадлежащие окнам. – IInspectable
@HansPassant Какая часть, по вашему мнению, не интуитивно понятна? Один пример в реальном мире - это визуальная студия. Visual Studio поддерживает несколько всплывающих окон. В VS, когда вы хотите открыть файл, все остальные всплывающие окна отключены. Во всяком случае, меня больше беспокоит реализация. – bysreg