![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вывод текста поверх всех окон. [D6, WinME, Win2k, WinXP]
ReYken © (2002-11-18 11:43:00)Подскажите, плз, как вывести текст (не на окне), а поверх всех окон,
без формы, на несколько секунд, а потом его убрать?
Заранее благодарен.
Yuri Btr (2002-11-25 12:06:00) [1]Сорри, всё работает
InvalidateRect(0,nil,true);
Yuri Btr (2002-11-25 12:05:00) [2]Кто нибудь подскажите, что передавать в InvalidateRect!
После вывода текста, мне нужно его убрать и перерисовать экран.
я пытаюсь
InvalidateRect(0,DesktopRect,true);
где DesktopRect : TRect
но надо какой то lpRect ???
И ещё, для корректного восстановления внешнего вида окон, нужно запоминать предыдущий Canvas а затем восстанавливать? или можно просто стереть выведенную надпись?
Заранее спасибо!
apay (2002-11-24 23:58:00) [3]используй DirectDraw, вырезай кусок экрана, делай копию, на ней пиши, выплескивай это на экран, ч/з 1/25 сек. восстанавливый кусок из заполненного. только не забудь на эти 1/25 сек. залокить область ч/з DirectDraw и залокить область, а то если например в это время окошко таскать будут, то фигня может получиться...
Godness (2002-11-22 22:33:00) [4]...ля, ...ля лохонулся - InvalidateRect(0) - передаеш дескриптор рабочего стола !?
Godness (2002-11-22 22:28:00) [5]P.S.
...ля забыл - стереть это дело на рабочем столе надо путем обновления последнего. Делается это так InvalidateRect(Shit);
Низкоуровневая функция, перерисовывает экран быстрее всех других функций. Правда, не совсем точно помню колличество параметров см. Help, хотя вроде все правильно.
Godness (2002-11-22 22:14:00) [6]var
Shit:HDC;
begin
Shit := GetDC(0); {этой функцией ты можеш рисовать где угодно (ну почти), 0 - дескриптор рабочего стола, получаеш в переменной Shit ссылку на контекст воспроизведения данного обьекта. Или так - GetDC(Button1.Handle) - рисуеш на бутоне; или так - функцией FindWindow получаеш дескриптор чужого окна и е...ш его}
Rectangle(Shit, 10, 10, 200, 200);
ReleaseDC(0,ScreenDC); {желательно освободить дескриптор (можно не сразу как ты понимаеш) иначе маст дай 98 может выдать глюк (у меня бывало)}
ReYken (2002-11-18 13:54:00) [7]Вот и я тоже подумал может SetWindowRgn........ :(...
А что такое InvalidateRect я не зна....
han_malign (2002-11-18 13:51:00) [8]Перерисовка всего экрана будет тормознутее.
(SetWindowRgn по тексту вообще жуть)
InvalidateRect?
ReYken (2002-11-18 13:46:00) [9]Ага... и будут огромные тормоза... я ж грю что надо меньше чем на секунду а потом другой текст.
han_malign (2002-11-18 13:44:00) [10]GetDC(0)- помоему, а если убирать то сначала вырезать фон, а потом прорисовывать его на место.
ReYken (2002-11-18 12:32:00) [11]Да нее... поверх _всех_ окон! И надо типа 25 кадра, меньше чем на секунду и убрать. Типа анимации. Текст меняется.
Song (2002-11-18 11:49:00) [12]Получаешь DC десктопа, связываешь его с TCanvas. И выводишь через TCanvas.TextOut(координаты, текст);