Информация об изменениях

Сообщение Re[2]: Как отследить что форма не перекрыта другими окнами - от 02.12.2015 5:54

Изменено 02.12.2015 5:57 Zoldan

Здравствуйте, Mr.Delphist, Вы писали:

MD>Здравствуйте, Zoldan, Вы писали:


Z>>Доброго времени суток!

Z>>Есть форма, нужно отследить момент когда эту форму не перекрывают другие окна, т.е когда пользователь ее видит целиком. Что, можно с этим сделать??
Z>>Приложение не WPF, обычный C#.

MD>Не особый спец по WinForms, но учитывая, что оно построено поверх Win32 API, схема примерно такая (псевдокодом на Win32 API):

MD>
MD>r1 = GetTopWindow()
MD>r2 = GetWindowRect()
MD>rect = IntersectRect(r1, r2) // если rect пуст, то пересечения окон нет
MD>


MD>Соответственно, сравнение надо повторить для всех окон, у которых Z-order "ближе" нашего, через EnumWindows(). По реализации — надо лишь найти WinForms-обёртки этих API-функций для шарпа.


MD>P.S. А кейс, когда Ваше приложение открыто через Remote Desktop, и окно этого RD перекрыто каким-то другим местным окном, надеюсь, не рассматриваете?