Наша компания продает два разных приложений и написанных на C++ с MFC 8.0Модальные Диалоги не открывается как самое верхнее окно
В обоих приложении мы создаем и открытые диалоги модальные, как это:
dlg_options myOptions;
myOptions. DoModal();
Этот это то, как мы это делаем уже почти 10 лет. У нас есть несколько сотен клиентов с широким диапазоном версий Windows (от XP до 8.1), и он всегда работал хорошо таким образом.
Несколько недель назад у нас был клиент, где модальные диалоги приложения не открывались как самое верхнее окно. Они остались на заднем плане, и вам пришлось активировать их вручную, чтобы вывести их на передний план.
Я не мог исправить эту проблему, но на его машине (Win 8.1) клиент установил некоторые расширения для Windows, как другое меню пуска, поэтому я нашел что-то виноватое. На самом деле система была испорчена. Было даже больше, чем одно приложение меню запуска! После переустановки Windows все было в порядке.
Сегодня у меня снова была проблема с другим приложением и другим клиентом. Его система снова была Windows 8.1, но на этот раз я не смог найти расширение Windows.
Было одно и то же, что и у обеих систем. Вы не могли переключаться между приложениями с помощью клавиш tab + alt. Даже когда наше программное обеспечение не запускалось, вы не могли переключаться. Когда наше приложение запускалось, вы можете использовать tab + alt, чтобы вернуть модальный диалог с фона на передний план. Это было очень приятно, но окно должно быть на переднем плане с самого начала.
Я понятия не имею, что там происходит и нет способа найти эту ошибку. Есть ли у кого-то подобный опыт? Что здесь происходит?
В случае, когда ваше диалоговое окно не выходит на передний план, ваше окно приложения мигает на панели задач? Существуют хаки, связанные с вызовами «SetWindowPos», которые могут заставить относительное позиционирование, но вы можете в конечном итоге раздражать пользователя, захватив фокус, если ваше приложение в фоновом режиме в то время. –