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

Вниз

Рабочий стол.   Найти похожие ветки 

 
DenKop   (2001-11-26 21:20) [0]

Можно ли рисовать на Рабочем столе.Не путать с TScreen.


 
Donal   (2001-11-27 10:47) [1]

можно...

Flags : DWord;
Rgn : HRgn;

Flags := DCX_Window or DCX_PARENTCLIP;
If Rgn <> 0 then Flags := Flags or DCX_IntersectRgn;
DeskDC := GetDCEx (GetDesktopWindow, Rgn, Flags);

где Rgn - регион, в котором хочешь рисовать (если 0 - рисуешь на всём рабочем столе)

полученный DC можно использовать для рисования


 
Fellomena   (2001-11-27 13:00) [2]

Зачем так сложно ? Получаешь handle desktop-a и рисуй:

procedure TForm1.Button1Click(Sender: TObject);
var
dc : hdc;
begin
dc := GetDc(0);
MoveToEx(Dc, 0, 0, nil);
LineTo(Dc, 300, 300);
ReleaseDc(0, Dc);
end;


 
Donal   (2001-11-27 13:40) [3]

хе..и что? работает? :-) У меня такой метод не работал, потому так сложно и реализовано


 
Fellomena   (2001-11-27 16:17) [4]

2 Donal: конечно работает, а ЧТО тут может не работать ?
Другое дело, что при перерисовки той части экрана, на котором располагается
выводимое таким образом изображение, само ("наше") изображение стирается.


 
Donal   (2001-11-27 16:34) [5]

это понятно :-) но сама ты пробовала своим способом нарисовать что-нибудь на рабочем столе?


 
Donal   (2001-11-27 16:39) [6]

а...сорри :-) извиняюсь...Не заметил, что у тебя GetDC (0) :-)


 
Polevi   (2001-11-27 17:01) [7]

вообще то правильнее будет GetDC(HWND_DESKTOP)


 
Donal   (2001-11-27 17:42) [8]

А кто тогда объяснит, почему GetDesktopWindow возвращает не ноль? :-))


 
Dimka Maslov   (2001-11-27 17:53) [9]

GetDesktopWindow возращает handle окна, являющимся родительским для всех остальных окон (top-level windows). Desktop как рабочий стол здесь не причем.


 
Donal   (2001-11-27 18:31) [10]

Справка Win32 в дельфях :

The GetDesktopWindow function returns the handle of the Windows desktop window. The desktop window covers the entire screen. The desktop window is the area on top of which all icons and other windows are painted.

И почему же здесь рабочий стол ни причём? :-)

Я бы как раз сказал, что хэндл 0 - это хэндл того окна, которое является родительским для всех окон.


 
Dimka Maslov   (2001-11-27 19:02) [11]

Родительским окном для всех окон является окно с хэндлом 128 (это видно в Spy++ из MSVC++), оно и называется Desktop. Окно, в котором распложены значки - это окно четвертого уровня Desktop->Progman->SHELLDLL_DefView->
SysListView32.
GetDesktopWindow всегда возращает 128, а GetDC(0) и GetDC(GetDesktopWindow) - возвращают одно и то же значение - дисплейный контекст всего экрана.


 
Donal   (2001-11-28 10:57) [12]

хм...с этим спорить не буду :-) Однако GetDC (GetDesktopWindow) возвращает DC, на котором нельзя рисовать.



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

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

Наверх





Память: 0.46 MB
Время: 0.005 c
1-9209
Королев
2002-02-14 11:44
2002.03.04
как узнать параметры функции импортируемые из DLL?


1-9123
cypher
2002-02-16 16:00
2002.03.04
Весь инет перекопал... =(


14-9296
Digitman
2002-01-15 18:33
2002.03.04
Барышни, наслушавшись здешнего бреду, покидают нас ?


1-9214
skywalker
2002-02-14 19:05
2002.03.04
Данные динамического массива


7-9313
Hruks
2001-11-30 11:52
2002.03.04
LPT, COM и Рэлюшки...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский