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

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

Выше всех окон [D6, WinXP]


AlexGreG ©   (2003-05-22 16:01:00) 

Как настроить форму так, чтобы при её отображении:
1) она всегда была видима полностью (не перекрывалась активным окном)
2) при активизации этой формы приложение, из которого была открыта форма, оставалось неавктивным.

п:
открыл я программу, на весь экран развернул
открываю ту самую форму из приложения
из неё открываю Paint и развернул на весь экран
(
при этих действиях моя форма (из которой открывается Paint)
должна всегда быть наверху (всмысле отображаться полностью)
)
работаю в Paint - моя форма становится неактивна, но остаётся видимой полностью
кликаю на форму - она активируется, но Paint остаётся видимым под формой, а, не программа, открытая на весь экран

Вот такая вот задача.

Буду благодарен каждому отвечающему.
Заранее спасибо.


AlexGreG   (2003-05-23 05:48:00) [1]

В продолжение темы:
эта форма должна работать как диспетчер задач в Windows


>SetWindowPos(form2.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE or >SWP_showwindow or swp_nomove); по идее этого вполне достаточно

по идее то достаточно, а на практике совсем не то, что нужно.
Форма вызывается из главной формы приложения, может быть по этому эффект не достигается?


Diamond Cat   (2003-05-22 19:09:00) [2]

SetWindowPos(form2.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE or SWP_showwindow or swp_nomove); по идее этого вполне достаточно


AlexGreG   (2003-05-22 16:55:00) [3]

Так она не отображается.
И элементы на ней тоже не отображаются

Добавляю флаг SWP_SHOWWINDOW - отображается, но описанного выше эффекта нет, перекрывается другими приложениями

Делаю как ниже, всё рисует, только перекрывается другими приложениями

SetWindowPos(form2.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE or SWP_NOMOVE);
ShowWindow(form2.Handle,SW_SHOWNA);
for i:=0 to form2.ControlCount-1 do
ShowWindow(TWincontrol(form2.Controls[i]).Handle,SW_SHOWNA);

Что делать - не знаю


Игорь Шевченко   (2003-05-22 16:08:00) [4]

SetWindowPos (YourHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE)


Наверх

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