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

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

Вывод текста поверх всех окон. [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(координаты, текст);


Наверх

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