Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Узнать, видна ли форма на экране?

748
09 июля 2009 года
AlphaOmega
159 / / 28.09.2004
Как у знать в данный момент видна ли форма программы на экране или нет?
Форма всегда visible=1, но несмотря на то, что она fsStayOnTop, временами пропадает куда-то на задний план. Alt+Tab восстанавливает её видимость.
Так вот - как программно узнать - не перекрывает ли форму моей программы что-либо ещё?
Application->RestoreTopMosts(); эффекта не даёт пока форма не в фокусе....
3.7K
10 июля 2009 года
0nni
326 / / 24.06.2008
GetForegroundWindow() вам возможно частично может помочь. Она возвращает самое "верхнее". Правда ваше окно может быть и не на самом верхнем уровне но тем не менее ни кем не перекрываться - в такой ситуации GetForegroundWindow() не совсем то.
535
10 июля 2009 года
Нездешний
537 / / 17.01.2008
Попробуйте GetTopWindow(NULL)
748
10 июля 2009 года
AlphaOmega
159 / / 28.09.2004
тут возникает другая проблема.
допустим, удалось узнать, что моё окно чем-то прикрыто.
но как переместить окно на _визуальный_ передний блан так, чтобы на него не сфокусировалась система?
BringToFront() помогает только с визуальной точки зрения, но она же и отбирает фокус у других программ, а имено этого и нужно избежать.
А RestoreTopMosts(), как оказалось помогает не всегда.

Кстати, такое "пропадание" окон fsStayOnTop в большинстве случаев характерно именно для программ, которые были запущены автоматически при старте системы. При ручном запуске вероятность "пропадания" сокращается вдвое или даже втрое...
3.7K
10 июля 2009 года
0nni
326 / / 24.06.2008
Вроде того?
 
Код:
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE)
748
10 июля 2009 года
AlphaOmega
159 / / 28.09.2004
Цитата: 0nni
SetWindowPos(...)


Да! Отличная функция - проверил - работает! Причём именно так, как я и хотел. Огромное спасибо!

Сегодня же начну масштабный тест с этой функцией - надесь осложнений типа BringToFront() не будет (особенно в полноэкранных приложениях)...
Если через месяц не отпишусь в этой теме - значит всё работает идеально!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог