Много раз после эпохи Windows 98 мы столкнулись с тем, что некоторые диалоги теряют свой Z-порядок и возвращаются к предыдущей форме.
Например:
Dialog1.ShowModal;
Dialog1.OnClickButton() : ShowMessage('anything');
Когда появляется MessageBox, он иногда не имеет фокуса и перемещается под Dialog1. Пользователи смущены этим, они говорят: мое приложение замерло!!! Но если они используют Alt + Tab для перехода в другое приложение и обратно, фокус возвращается в MessageBox, и это будет окно переднего плана.
Мы испытали это с ShowMessage, MessageBox, нормальными формами, а также с формами QuickReport.
Кто-нибудь знает об этом? Это ошибка Windows? Как вы можете это предотвратить? Как это поймать?
Спасибо за вашу помощь: дд
Я действительно сказал, что ПОСЛЕ Win98, поэтому все ОС (Win7 также) затронуты этой проблемой. Мы использовали Delphi 6 Prof, поэтому свойства не работают с формами по умолчанию.
Кто-то сказал, что диалоговые окна сообщений управляются с помощью MessageBox + MB_APPLMODAL. Это хорошая новость, но у нас много старых форм и компонентов, сторонних инструментов.
Так что тяжелая работа - сделать совершенно новое приложение с заменой форм.
Но мы постараемся сделать это.
Я думаю, что ответ - это проблема с половинным приложением и проблема с половиной Windows. Если Windows иногда обрабатывает это, а иногда и нет - кажется, это ошибка Windows. Но если мы сможем заставить хорошие модальные окна сделать, это ошибка программирования.
Может кто-нибудь объяснить мне, что означает флаг WS_POPUP? Имеет ли он какой-то побочный эффект или нет?
Спасибо: дд