Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];

Вниз

Как рисовать на обоях, вместо обоев?   Найти похожие ветки 

 
alxx   (2002-04-12 16:17) [0]

Не подскажете, как можно рисовать прямо на обоях (разместить поверх обоев свое окно), как например может делать Winamp"овская AVS (overlay mode)?


 
Song   (2002-04-12 16:32) [1]

Это назвается рисовать на канвасе рабочего стола.


 
alxx   (2002-04-14 14:43) [2]

Ну и как нарисовать на канвасе рабочего стола?
Если использовать GetDesktopWindow - то получается хэндл вовсе не обоев, а всего рабочего стола, включая окна, которые на нем висят.


 
lipskiy   (2002-04-14 14:53) [3]

Лучше взять файл обоев, испоганить его, и подсунуть системе как новые обои, имхо.


 
alxx   (2002-04-14 14:57) [4]

Нет. Я хочу в реалтайме, а загрузка новых обоев, я так понимаю десять раз в секунду не получится. Может это какие-нибудь функции DirecrX"а? AVS то как-то делает.


 
alxx   (2002-04-14 15:41) [5]

Никто не знает?


 
lipskiy   (2002-04-14 19:17) [6]

В реалтайме, имхо, только на канве рабочего стола, при этом надо следить за всеми окнами и их координатами и постоянно перерисовывать, если окна меняют свое положение.


 
alxx   (2002-04-14 21:01) [7]

А как за ними следить? Хотя вроде бы были функции... Разберусь.
А вот на канве рабочего стола - с помощью дескриптора, который получить на его хэндл? А то я попробовал, чего-то не получилось. Интересно только - как это все будет тормозить?

А как же быть с иконками - они же должны прорисовываться. А их не отследить.


 
alxx   (2002-04-16 17:46) [8]

Никто не знает, как быть?


 
slym   (2002-04-17 07:29) [9]

hDC:=getDC(0);
и paint...
рисуй че надо, только проблема если десктоп обновляется, а делает он это часто, все ваши старания затираются...
рисуешь где нить в прозрачный битмап, ставишь хук на WM_PAINT и выкладываешь свой битмап на getDC(0)
можно сделать транспарент форму присвоить парента (десктоп) и рисовать на ней, только самому ее перерисовывать принудительно раз 25 в секунду, мерцает? дубл буфферинг... или опять Hoук


 
Alx2   (2002-04-17 08:31) [10]

>А как за ними следить? Хотя вроде бы были функции... Разберусь.
Ставишь hook на Wm_onPaint "рабочего стола" и после его отработки дорисовываешь свое.


 
REA   (2002-04-17 09:40) [11]

Можно еще прозондировать поглубже API функции и раскопать Handle нужного окна. Или еще посмотреть плагинсы к эксплореру - активный стол там или еще что.


 
Alx2   (2002-04-17 09:54) [12]

>раскопать Handle нужного окна
GetDesktopWindow


 
REA   (2002-04-17 10:52) [13]

WinSight говорит что иерархия окон такая -
Desktop - Progman (Explorer) - Shell_DLL - SysListView32 - SysHeader (Hidden)

не знаю чей Handle возвратит GetDesktopWindow, но если тот, что нужно, то и хорошо. (Я бы наверно рисовал поверх этого SysListView32, хотя далеко не уверен)


 
Alx2   (2002-04-17 11:15) [14]

Рисует на Desktop, правда значки затирает. IMHO надо InvalidateRgn заполнять еще.

cnv : TCanvas;
DC : HDC;
hw : HWND;
Begin
cnv := TCanvas.Create;
Try
hw := FindWindow("ProgMan", Nil);
DC := GetWindowDC(hw);
If DC <> 0 Then
Begin
cnv.Handle := DC;
cnv.Pen.COLOR := clRed;
For K := 1 To 100 Do
cnv.Rectangle(random(600), random(600), random(600), random(600));
ReleaseDC(hw, DC);
End;
Finally
cnv.Free;
End;


 
alxx   (2002-04-17 21:11) [15]

Спасибо за ответы. Попробую дальше поразбираться.
А может это правда какая-нибудь функция DirectX-а?



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

Форум: "Основная";
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.006 c
1-94493
Satrap
2002-04-14 18:22
2002.04.29
MDI-приложение


14-94551
Pat
2002-03-21 17:02
2002.04.29
Проверь свою реакцию


1-94404
Roman9
2002-04-07 10:57
2002.04.29
Как запустить из одного exe-файла другой?


1-94468
Sasha9
2002-04-16 12:21
2002.04.29
Бит из байта


7-94587
XM-AD
2002-01-30 02:29
2002.04.29
А можно ли???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский