Форум: "Начинающим";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
ВнизПоверх всех окон Найти похожие ветки
← →
Димыч © (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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.05 c