Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать, что мое окно находится над другим? [D6, D7, Win2k, WinXP]


Страницы:   1 2

dmk ©   (2005-01-06 01:00:00) 

Возможно ли это сделать без перечисления окон? (GetNextWindow и т.д.)


dmk   (2005-01-06 01:35:00) [21]

Известны Handl'ы обоих окон. Мне нужно твердо быть уверенным, что мое окно находится над другим. У меня имеется функция
EnumWindowsProc которая перечисляет все окна и в случае
пересечения моего с другим происходит перерисовка части
содержимого окна в том месте, где окна пересекались.
Поскольку от системы невозможно получить регион пересечения
окон (при движении одного окна по другому), мне пришлось делать
это "ручками". В итоге у меня отбрасываются почти все окна:
невидимые, которые не пересекаются и т.д., но попадаются
некоторые которые не подходят под следующее условие -

Result(После этого окна перерисовываем содержимое)
 := ((ExWindowStyle and WS_EX_TOPMOST) <> 0) or
    ((ExWindowStyle and WS_EX_TOOLWINDOW) <> 0) or
    ((WindowStyle and WS_VISIBLE) <> 0);

Например окно Progman'а (оно тоже перечисляется). Оно всегда
видно, но за ним не надо ничего перерисовывать, т.к. я знаю, что
оно лежит всегда под моим окном, но программа этого знать не
может! Да и еще таких окон может быть много.
В общем нужно написать одну функцию, которая будет возвращать
относительную позицию в Z-Order'е относительно моего окна.
Хотя бы в виде True - False. Вот и бьюсь над этим.


Piter   (2005-01-06 01:12:00) [22]

А зачем это нужно?


Piter   (2005-01-06 01:12:00) [23]

dmk ©   (06.01.05 1:00)
GetNextWindow и т.д


а это вряд ли поможет


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо