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

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

Поместить форму программы поверх всех окон [D6, WinXP]


AndreykA ©   (2004-11-11 10:46:00) 

Доброго времени всем. Прошу кто знает, подскажите. Задача заключается в том, что необходимо поместить форму программы поверх всех окон, т.е когда запущено какое-то приложение в полноэкранном режиме(например игра), форма должна находиться поверх игры и играя можно было бы видеть форму(на ней периодически обновляется информация, поэтому видеть ее нужно постоянно). Просто поставить свойство формы fsStayOnTop - не помогает, при запуске програмы в процессе игры (через горячие клавиши) форма показывается и тут же пропадает.
Заранее спасибо.


alles   (2004-11-12 18:44:00) [1]

sorry:
Почему, если присвоить свойству FormStyle значение fsStayOnTop, форма так и не остается на самом верху?

Просто добавьте application.RestoreTopMosts в обработчик события формы OnPaint. Это ошибка.

Могли бы вы рассказать об этом чуть-чуть поподробнее? Delphi где-то в неправильном месте осуществляет вызов NormalizeTopMosts?

Borland говорит что это Windows, но это случается когда StayonTop-форма НЕ является главной формой. (Некоторые английские программисты чтобы получить эту отговорку потратили несколько сотен долларов, звоня в американскую службу помощи по телефону 1-800).


alles   (2004-11-12 18:40:00) [2]

Kuliba2000:
Почему, если присвоить свойству FormStyle значение fsStayOnTop, форма так и не остается на самом верху?

Почему, если присвоить свойству FormStyle значение fsStayOnTop, форма так и не остается на самом верху?

Могли бы вы рассказать об этом чуть-чуть поподробнее? Delphi где-то в неправильном месте осуществляет вызов NormalizeTopMosts?

Могли бы вы рассказать об этом чуть-чуть поподробнее? Delphi где-то в неправильном месте осуществляет вызов NormalizeTopMosts?


AndreykA   (2004-11-12 16:43:00) [3]

справка из делфи:
Value : HWND_TOPMOST
Meaning : Places the window above all non-topmost windows. The window maintains its topmost position even when it is deactivated.


AndreykA   (2004-11-12 16:43:00) [4]

Так что такой вариант не прокатывает :(


begin...end   (2004-11-11 18:52:00) [5]

AndreykA   (11.11.04 11:30) [3]

Может, попробовать SetWindowPos c HWND_TOPMOST ?


begin...end   (2004-11-11 18:52:00) [6]

Хотя нет, скорее всего не поможет...


AndreykA   (2004-11-11 18:48:00) [7]

Так что, так никто и не подскажет это сделать? :(


AndreykA   (2004-11-11 11:30:00) [8]

Попробовал, поставил на форму таймер и каждую милисекунду делаю show - пару раз померцала форма, что на ней было даже не успел разглядеть, а потом даже мерцать перестала...
может еще какой вариант есть?
Заранее спасибо.


TUser   (2004-11-11 11:18:00) [9]

В таймере - Show


cvg   (2004-11-11 11:15:00) [10]

У меня проблема обратная: мудрый чувак, который писал заготовку для моей программы, как-то по моей просьбе подсказал мне, как сделать, чтобы окто проги было поверх всех окон. Но как он это сделал, я забыл, а сам найти не могу. В этот форум как-то писал -- ничего не ответили. А позвонить ему я смогу (если смогу еще) только вечером.


Наверх

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