![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поверх всех окон [D7, Win95/98, WinXP]
Димыч © (2006-11-08 15:02:00)Как реализовать включение и выключение функции поверх всех окон.
Ketmar (2006-11-09 01:00:00) [1]>[21] RASkov 8-Nov-2006, 21:27
>Наверное RecreateWnd ченить или RecreateHandle.
>Собсно там все посмотреть можно...
ну лениво мне смотреть. кто знает (или любознателен) -- тот понял. %-)
DVM (2006-11-08 23:10:00) [2]Распечатать окно на принтере, наклеить на монитор.
RASkov (2006-11-08 21:31:00) [3]> или OnShow вызовет AV
Т.е. не AV а Raise;
Cannot change Visible in OnShow
RASkov (2006-11-08 21:27:00) [4]На FormCreate ошибки нет
procedure TForm1.FormCreate(Sender: TObject);
begin
FormStyle:=fsStayOnTop;
CheckBox1.Checked:=True;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked then FormStyle:=fsStayOnTop else FormStyle:=fsNormal;
end;
И при смене моргает некрасиво... И установка в OnActivate или OnShow вызовет AV
> не всё так просто. StayOnTop вызывает RecreateForm() (или
> как она там зовётся?). некрасиво это.
Наверное RecreateWnd ченить или RecreateHandle.
Собсно там все посмотреть можно...
А вот это работает везде и не моргает:
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); - Установка StayOnTop
SetWindowPos (Handle, HWND_NOTOPMOST , 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); - Normal
[14] Димыч © (08.11.06 15:42)
> SetWindowPos ( form1. Handle, HWND_NOTOPMOST , 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); - правда не помогло
Может то, что я выделил, в этом проблема...
Димыч (2006-11-08 16:41:00) [5]Блин хоть по таймеру запускай.
Ketmar (2006-11-08 16:35:00) [6]не всё так просто. StayOnTop вызывает RecreateForm() (или как она там зовётся?). некрасиво это.
Димыч (2006-11-08 16:33:00) [7]
> RASkov (08.11.06 15:33) [9]
> >Димыч, А StayOnTop не помогает?
Спасибо за совет, открыл глаза. Ну не знал я что это так просто. Вот только теперь проблема, из файла загружаются настройки приложения, среди которых есть параметр "оставаться поверх всех", пробовал при загрузке приложения применять свойство fomrstyle и в oncreate и в onactivate и в onshow везде ошибка вылетает, куда же запихать
Ketmar (2006-11-08 15:43:00) [8]>[14] Димыч(c) 8-Nov-2006, 15:42
>правда не помогло
ищи у себя баг. я повторю: у меня работает.
RASkov (2006-11-08 15:43:00) [9]
> мне просто интересно как он умудряется быть вообще "поверх
> всех окон, которые поверх всех окон" :)
Он крут.
Ketmar (2006-11-08 15:43:00) [10]>[13] Palladin(c) 8-Nov-2006, 15:41
>сотрем то понятно, мне просто интересно как он умудряется
>быть вообще "поверх всех окон, которые поверх всех окон" :)
а вот такой хитрый, зараза. %-)
Димыч (2006-11-08 15:42:00) [11]SetWindowPos (form1.Handle, HWND_ NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); - правда не помогло
Palladin (2006-11-08 15:41:00) [12]
> Ketmar © (08.11.06 15:34) [11]
сотрем то понятно, мне просто интересно как он умудряется быть вообще "поверх всех окон, которые поверх всех окон" :)
Ketmar (2006-11-08 15:36:00) [13]>[10] Димыч(c) 8-Nov-2006, 15:33
>не помогло
а почему у меня опять сработало? я что-то снова сделал не так???
Ketmar (2006-11-08 15:34:00) [14]>[7] Palladin(c) 8-Nov-2006, 15:31
>Task Manager все равно победит :)
а мы его сотрём. %-)
>[9] RASkov 8-Nov-2006, 15:33
>че торчит??
всё торчит.
>>Димыч, А StayOnTop не помогает?
лёгкие пути -- это скучно.
Димыч (2006-11-08 15:33:00) [15]Спасибо, точно торчит, я так понял все дело в SWP_NOMOVE or SWP_NOSIZE.
А как теперь сделать это окно опять "обычны смертным", не поверх всех окон. Сделал вот так
SetWindowPos (form1.Handle, HWND_NOTOPMOST , 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
не помогло
RASkov (2006-11-08 15:33:00) [16]
> вот торчит, зараза
че торчит?? программа? окно? или...? :)
>Димыч, А StayOnTop не помогает?
Anatoly Podgoretsky (2006-11-08 15:31:00) [17]> Димыч (08.11.2006 15:24:04) [4]
> Нужно что моя программа оставалась всегда по верх всех остальных приложений.
Чего захотел, а если другая программа тоже это желает? Будете друг другу морду бить?
Palladin (2006-11-08 15:31:00) [18]
> Ketmar © (08.11.06 15:25) [5]
Task Manager все равно победит :)
Ketmar (2006-11-08 15:25:00) [19]вот торчит, зараза, сверху. упорно. запускаю что-то -- а оно всё равно сверху.
Ketmar (2006-11-08 15:25:00) [20]почему-то у меня всё работает.
SetWindowPos(handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);, ага?