Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.26;
Скачать: CL | DM;

Вниз

Поверх всех окон   Найти похожие ветки 

 
Димыч ©   (2006-11-08 15:02) [0]

Как реализовать включение и выключение функции поверх всех окон.


 
Ketmar ©   (2006-11-08 15:05) [1]

не знаю. и никто не знает, я думаю. лично я даже представить такое не могу -- при всём своём богатом и извращённом воображении.


 
Димыч ©   (2006-11-08 15:18) [2]

есть такая вот вещь

setwindowpos(form1.handle,HWND_TOPMOST,form1.Left,form1.Top,form1.Width,form1.He ight,0);

но почему то если запустить новое приложение оно оказывается поверх form1, почему?


 
Ketmar ©   (2006-11-08 15:22) [3]

SetWindowPos(), F1. читать о параметре uFlags.


 
Димыч ©   (2006-11-08 15:24) [4]

Может плохо объяснил чего хочу. Нужно что моя программа оставалась всегда по верх всех остальных приложений.Функция setwindowpos помогаеть, но только временно, почему не знаю?


 
Ketmar ©   (2006-11-08 15:25) [5]

почему-то у меня всё работает. SetWindowPos(handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);, ага?


 
Ketmar ©   (2006-11-08 15:25) [6]

вот торчит, зараза, сверху. упорно. запускаю что-то -- а оно всё равно сверху.


 
Palladin ©   (2006-11-08 15:31) [7]


> Ketmar ©   (08.11.06 15:25) [5]

Task Manager все равно победит :)


 
Anatoly Podgoretsky ©   (2006-11-08 15:31) [8]

> Димыч  (08.11.2006 15:24:04)  [4]

> Нужно что моя программа оставалась всегда по верх всех остальных приложений.

Чего захотел, а если другая программа тоже это желает? Будете друг другу морду бить?


 
RASkov   (2006-11-08 15:33) [9]


> вот торчит, зараза

че торчит?? программа? окно? или...? :)

>Димыч, А StayOnTop не помогает?


 
Димыч ©   (2006-11-08 15:33) [10]

Спасибо, точно торчит, я так понял все дело в SWP_NOMOVE or SWP_NOSIZE.
А как теперь сделать это окно опять "обычны смертным", не поверх всех окон. Сделал вот так

 SetWindowPos (form1.Handle, HWND_NOTOPMOST , 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);


не помогло


 
Ketmar ©   (2006-11-08 15:34) [11]

>[7] Palladin(c) 8-Nov-2006, 15:31
>Task Manager все равно победит :)
а мы его сотрём. %-)

>[9] RASkov 8-Nov-2006, 15:33
>че торчит??
всё торчит.

>>Димыч, А StayOnTop не помогает?
лёгкие пути -- это скучно.


 
Ketmar ©   (2006-11-08 15:36) [12]

>[10] Димыч(c) 8-Nov-2006, 15:33
>не помогло
а почему у меня опять сработало? я что-то снова сделал не так???


 
Palladin ©   (2006-11-08 15:41) [13]


> Ketmar ©   (08.11.06 15:34) [11]

сотрем то понятно, мне просто интересно как он умудряется быть вообще "поверх всех окон, которые поверх всех окон" :)


 
Димыч ©   (2006-11-08 15:42) [14]

SetWindowPos (form1.Handle, HWND_NOTOPMOST , 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); - правда не помогло


 
Ketmar ©   (2006-11-08 15:43) [15]

>[13] Palladin(c) 8-Nov-2006, 15:41
>сотрем то понятно, мне просто интересно как он умудряется
>быть вообще "поверх всех окон, которые поверх всех окон" :)
а вот такой хитрый, зараза. %-)


 
RASkov   (2006-11-08 15:43) [16]


> мне просто интересно как он умудряется быть вообще "поверх
> всех окон, которые поверх всех окон" :)

Он крут.


 
Ketmar ©   (2006-11-08 15:43) [17]

>[14] Димыч(c) 8-Nov-2006, 15:42
>правда не помогло
ищи у себя баг. я повторю: у меня работает.


 
Димыч ©   (2006-11-08 16:33) [18]


> RASkov   (08.11.06 15:33) [9]
> >Димыч, А StayOnTop не помогает?


Спасибо за совет, открыл глаза. Ну не знал я что это так просто. Вот только теперь проблема, из файла загружаются настройки приложения, среди которых есть параметр "оставаться поверх всех", пробовал при загрузке приложения применять свойство fomrstyle и в oncreate  и в onactivate и в onshow везде ошибка вылетает, куда же запихать


 
Ketmar ©   (2006-11-08 16:35) [19]

не всё так просто. StayOnTop вызывает RecreateForm() (или как она там зовётся?). некрасиво это.


 
Димыч ©   (2006-11-08 16:41) [20]

Блин хоть по таймеру запускай.


 
RASkov   (2006-11-08 21:27) [21]

На 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); - правда не помогло

Может то, что я выделил, в этом проблема...


 
RASkov   (2006-11-08 21:31) [22]

> или OnShow вызовет AV

Т.е. не AV а Raise;
Cannot change Visible in OnShow


 
DVM ©   (2006-11-08 23:10) [23]

Распечатать окно на принтере, наклеить на монитор.


 
Ketmar ©   (2006-11-09 01:00) [24]

>[21] RASkov 8-Nov-2006, 21:27
>Наверное RecreateWnd ченить или RecreateHandle.
>Собсно там все посмотреть можно...
ну лениво мне смотреть. кто знает (или любознателен) -- тот понял. %-)



Страницы: 1 вся ветка

Текущий архив: 2006.11.26;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.031 c
15-1163092863
TUser
2006-11-09 20:21
2006.11.26
Размер djvu


15-1162664362
ArtemESC
2006-11-04 21:19
2006.11.26
Модуляция


11-1137494056
Grom PE
2006-01-17 13:34
2006.11.26
Странности KOL и MCK (v2.31)


2-1162953204
Grademax
2006-11-08 05:33
2006.11.26
Как правильно убить процесс?


15-1161516520
Mr.Dix
2006-10-22 15:28
2006.11.26
Ограничение количества выводимых на печать листов