Активация модальной Windows после переключения на приложение - PullRequest
1 голос
/ 26 ноября 2009

У нас есть приложение на C #, которое содержит как модальные, так и немодальные окна. Пользователь может открыть несколько немодальных окон и открыть модальное окно из одного из них.

Если пользователь переключается на другое приложение, а затем переключается обратно на наше, щелкая одно из немодальных окон (кроме того, которое открыло модальное окно) на панели задач, немодальное окно становится активным, но делает не принимать ввод, потому что модальное окно открыто, но находится позади других окон.

Как мы можем гарантировать, что независимо от того, на какое из наших окон пользователь переключается обратно, модальное является тем, которое фактически активировано? Это поведение, демонстрируемое Microsoft Outlook, например.

Любая помощь будет оценена.

1 Ответ

1 голос
/ 26 ноября 2009

Это, конечно, возможно, но действительно раздражает в обслуживании. Я регулярно работаю над приложением, которое смешивает модальные и немодальные окна. Это моя стратегия (которая не на 100% полностью защищена)

  1. Установите модальные окна TOPMOST, когда возможно.
  2. Когда определенные действия обнаружено (как нажатие кнопки windows-d), Вы должны вручную установить окно Вернуться к вершине. Я не знаю, почему окна уходят назад, но поведение не совпадает между Windows XP, Vista, 2003 и т. Д.

Это действительно раздражает поддерживать код, который переставляет окна. Я призываю вас не смешивать модальные и немодальные окна.

Редактировать

Я забыл упомянуть, что я использую WTL и много родных функций win32. Я также пытаюсь создать окна, которые имеют отношения родитель / потомок, чтобы сообщения клавиатуры и мыши максимально отражались на дочерних окнах.

...