Я создал диалог с существующим приложением (о котором я не знаю всей его структуры), и диалог поддерживает самый высокий Z-порядок ВСЕ ОКНА ПОКАЗАННЫЕ В ОС вместо самого высокого в приложении.
Вот примерный набросок того, как я его реализую:
Карта сообщений ON_COMMAND
связывает меню с функцией обработчика OnTestDialog()
, который выглядит так:
void CSettle3DDoc::OnTestDialog(){
UpdateAllViews(NULL);
CDlg_Test_Dialog dlg;
dlg.DoModal();
}
CDlg_Test_Dialog
это подкласс ETSLayoutDialog
, код которого вы можете найти здесь: http://www.codeproject.com/Articles/116/Layout-Manager-for-Dialogs-Formviews-DialogBars-an
Оттуда, ::OnInitDialog()
призывает ETSLayoutDialog::OnInitDialog()
и инициализирует другую переменную, которая не имеет отношения к Z-порядку.
После инициализации нет другого кода, который вызывает изменение Z-порядка Диалога.
Оставаться поверх других окон в приложении приемлемо, но блокирование просмотра других приложений немного раздражает, и я бы хотел, чтобы это было исправлено 🙁
Любые идеи будут оценены.
Задача ещё не решена.
Других решений пока нет …