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

Вниз

Оверлеи   Найти похожие ветки 

 
Opilki_Inside ©   (2004-02-25 22:56) [0]

Всем привет!

Где можно найти какие-нибудь примеры работы с оверлееями на Делфи?
Пробывал через яндекс искать, ничего дельного так и не нашел... тока один пример на vс++ :(

И вобще, что такое оверлеи?? а то я похоже запутался...


 
Sapersky ©   (2004-02-26 11:32) [1]

Где можно найти какие-нибудь примеры работы с оверлееями на Делфи?

Вообще у меня есть... но лучше не проси выслать, а потыкай местное начальство, чтоб выложили - я им почти три месяца назад отправлял статью с примером (на конкурс), но выкладывать почему-то не хотят... ну, статья может и кривовата, но пример ИМХО вполне приличный :)

Или см. DX7 SDK (в плане теории, примеров на Delphi там нет, разумеется :))


 
Digitman ©   (2004-02-26 11:33) [2]

тебе оно зачем вообще ?

меньше знаешь - лучше спишь)

ну не было в твоей практике прогр-я под Win32 никаких оверлеев и не было ... и все замечательно работало ... безо всяких оверлеев ... с чего вдруг они тебя так озаботили ?


 
Sapersky ©   (2004-02-26 12:19) [3]

2Digitman:
Оверлеи в данном случае - аппаратная фича видеокарты, позволяющая накладывать изображения "поверх" первичной поверхности (экрана) без изменения содержания поверхности (т.е. без копирования видеопамяти - наложение делается в ЦАП видеокарты).


 
Opilki_Inside ©   (2004-02-26 19:38) [4]

> тебе оно зачем вообще ?

Есть такая программа, называется Dremples Desktop.
Программа формирует всевозможные интересные образы на рабочем столе работая как бы в фоновом режиме... Т.е. все иконки и окна, которые находятся на рабочем столе она не трогает, а рисует как бы на обоях раб. стола... Как это реализовано???
Я не могу понять она сделана на уровне виндовских API или с помощью DirectX

если что вот ссылка на программу...
http://www.geisswerks.com/drempels/index.html

Я подобный вопрос задал еще на фороме про API, они мне совсем о другом говорят:)
Надо же найти истину все таки!


 
Opilki_Inside ©   (2004-02-26 19:49) [5]

> потыкай местное начальство, чтоб выложили

А-а-а!! Начальство! Выложите пожалуста его примеры! Ведь очень интересная тема и плохо освещена. Особено в Делфи!

...и кривую статью выложить можно... её все равно мало кто читать будет, т.к. пример к ней будет:)


 
Digitman ©   (2004-02-27 10:01) [6]


> Sapersky ©   (26.02.04 12:19) [3]
> Оверлеи в данном случае - аппаратная фича видеокарты


увы, из вопроса было совершенно неочевидно, что речь в дан.случае идет именно об этом

мало ли какие еще "оверлеи" бывают)


 
Opilki_Inside ©   (2004-02-27 15:26) [7]

2Sapersky:

Да ладно тебе, вышли плз примерчик..
я тебе тоже че-нить пришлю...


 
Sapersky ©   (2004-02-28 18:32) [8]

Отправил.


 
TButton ©   (2004-02-28 19:32) [9]

а можно и мне примерчик.
>мало ли какие еще "оверлеи" бывают)
оверлей он и в Африке оверлей.


 
cyborg ©   (2004-02-29 09:18) [10]

[9] TButton ©   (28.02.04 19:32)
Оверлей ещё в турбо паскале был, насколько помню, и к графике он не относится.


 
тихий вовочка ©   (2004-02-29 20:08) [11]

В паскале оверлей относился к программе подкачеваемой с винчестера в ОЗУ кусками, в зависимости от ситуации. О чем в данный момент речь(графика?) - непонятно


 
DNS   (2004-02-29 21:22) [12]

А можно и мне примерчик ? ;)


 
Opilki_Inside ©   (2004-02-29 22:12) [13]

Естсественно речь о графике!!
Я же ссылку дал на программу, о которой идет речь.
Да и вобще этот форум посвещен вопросам мультимедии: графике и звуку!
Что вы все глупые вопросы задаете "какой оверлей"...

2Sapersky:
Спасибо за пример... я уже со всем разобрался, просто супер!
Буду свои десктопсейверы писать :))


 
Sapersky ©   (2004-03-01 18:33) [14]

Со всем - и с реестровым глюком тоже? Тогда поведай, что это было - надо же мне исправить на будущее.
Я подозреваю, что из-за использования в 2000 WideString вместо обычных, или просто прав не было на доступ к ключу.
Если же просто закомментировать строчку - так не годится, картинка не будет восстанавливаться.


 
panov ©   (2004-03-01 22:42) [15]

>Sapersky ©   (01.03.04 18:33) [14]
Не надо всем высылать, лучше в кладовку выложить.


 
Opilki_Inside ©   (2004-03-02 03:01) [16]

2Sapersky:

я попробывал на работе запустить... там другие глюки... хотя тоже windows2000.. но проблема опять же с реестром.. простое закоментирование там уже не помогает... :(


 
VMcL ©   (2004-03-02 07:48) [17]

>>Opilki_Inside ©  (29.02.04 22:12) [13]
>Естсественно речь о графике!!
>Я же ссылку дал на программу, о которой идет речь.
>Да и вобще этот форум посвещен вопросам мультимедии: графике и звуку!
>Что вы все глупые вопросы задаете "какой оверлей"...

Хе! Тут недавно один тип про составление списка процессов в конф-ции "Игры" спрашивал ))

>Я же ссылку дал на программу, о которой идет речь.
Делать всем нечего какие-то "левые" программы качать. Без обид.


 
Sapersky ©   (2004-03-04 11:46) [18]

попробывал на работе запустить... там другие глюки... хотя тоже windows2000.. но проблема опять же с реестром..

Конкретно - что? Если нет доступа к ключу - тут вряд ли чем-то можно помочь. Хотя если кто-нибудь подскажет средство получить имя картинки на десктопе, убрать её и потом снова поставить без залезания в реестр и системные файлы... Есть вроде shellexecute, но через него название существующей картинки не узнать, только установить можно, да?

Пример в ближайшем будущем куда-нибудь выложу (хотелось бы предварительно исправить глюки, конечно).

Делать всем нечего какие-то "левые" программы качать.

WinAmp не левая программа? Ну так см. плагин AVS, в разделе display вроде, overlay mode и set desktop to color...


 
Opilki_Inside ©   (2004-03-04 17:40) [19]

В функции ReadRegistryString размер поставил побольше на ед., ошибка не вылетает SetString(Result, nil, Size);

Но всё равно, когда запускается программа, анимация появляется только на подписях к иконкам, необходимо жать правой кнопкой мыши по экрану и нажимать обновить экран, что бы работало как положено. После завершения работы тоже обновить экран, что бы обои появились.

Пробывал программно обновлять десктоп:
SendMessage(FindWindow("Progman", "Program Manager"),       WM_COMMAND,$A065,0);

и так:

InvalidateRect(0,0,true);
UpdateWindow(GetDesktopWindow());

но ниче не получилось :(

В ХР проверил - все работает без глюков.


 
Sapersky ©   (2004-03-05 11:59) [20]

Вообще-то десктоп обновляется (должен обновляться) командой   SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE);

Попробуй в качестве последнего параметра поставить
SPIF_UPDATEINIFILE (есть ещё SPIF_SENDCHANGE, но он определён равным SPIF_SENDWININICHANGE).

Вообще, данная функция рассылает всем окнам сообщение об обновлении параметров. Можно попробовать отправлять вручную (всем окнам в данном случае необязательно, достаточно десктопу):

SendMessage(GetDesktopWindow, WM_SETTINGCHANGE, 0, 0); // или PostMessage
UpdateWindow(GetDesktopWindow);

Что ещё... в качестве пустой картинки можно попробовать не пустую строку, а "(None)", например (может, если пустая, он не реагирует). Это в TDXOverlay.SetOverlayCKey:

If Draw2Desktop<>FDraw2Desktop then begin
 If Draw2Desktop then begin
   FDsColor:=DsTempColor; FDsWallPaper:="(None)"; // <-
<...>


 
Guest ©   (2004-03-11 11:37) [21]

Удалено модератором


 
Sapersky ©   (2004-04-09 18:58) [22]

Статья и пример выложены, ошибки в примере, о которых говорилось здесь, исправлены.

Лучше поздно, чем сами знаете чего :)



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

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

Наверх




Память: 0.53 MB
Время: 0.025 c
3-1086070229
Ale
2004-06-01 10:10
2004.06.27
Связанные таблицы


1-1087277090
Salik
2004-06-15 09:24
2004.06.27
IncMonth на оборот?


3-1085919471
avgur
2004-05-30 16:17
2004.06.27
Последние 5 строк


14-1085948896
Piter
2004-05-31 00:28
2004.06.27
Таблица описателей процеса


14-1086757862
Baks
2004-06-09 09:11
2004.06.27
Вопрос на зацепку (скорее на скорость ответа)