Как рисовать мой рабочий стол

Рабочий стол

Вы можете использовать поверхность рабочего стола для вывода любой графики. Этот способ может понадобится для написания различных напоминалок, показ праздников. Вы можете поселить на рабочем столе забавного персонажа из комикса и многое другое. Осуществить это можно очень простым способом, напишем процедуру для рисования:

1 2 3 4 5 6 7 procedure TForm1.DeskTopPaint(Sender:Tobject); var DeskTop:TCanvas; begin DeskTop:=TCanvas.Create; try DeskTop.Handle:=GetDC(0);// Получим Handle Рабочего стола


И ВСЕ!!! Далее работаем с DeskTop как с обычным TCanvas.
Например поместим текущую дату:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 DeskTop.Brush.Style:=bsClear; // Устанавливаем тип кисти With DeskTop.Font do // Подбираем шрифт Begin Color:=clRed; Size:=13; Name:='Times New Roman'; Style:=[fsBold]; end; DeskTop.TextOut(10,10,'Сегодня : '+DateToStr(Now)); ReleaseDC(0, DeskTop.handle); finally DeskTop.Free; // Уберем за собой end; DeskTop.Free; end;

Единственный минус данного способа – другие формы затирают надпись. По этому есть несколько других методов. Это прозрачная форма и помещение изображения вместо бакграунда ( так делают почти все программы календари ). Для смены обоев предусмотрена функция Win32API:

1 SystemParametersInfo(SPI_SETDESKWALLPAPER,0,PChar('Path'),SPIF_SENDWININICHANGE);Где Path - путь к BMP файлу.

По умолчанию устанавливает обои как рисовать мой рабочий стол ‘В центре’, а как поставить ‘Размножить’ я так и не нашел. Если вы захотите убрать обои, то в параметре Path надо указать несуществующий файл.
При работе часто требуется обновить рабочий стол, по умолчанию это делается клавишей F5. В Delphi это делается это вот такой функцией:

1 SendMessage(FindWindow ('Progman', 'Program Manager'), WM_COMMAND, $A065, 0);

Функцией FindWindow находим, и получаем handle на нужное окно.
Первый параметр – class name / название класса /, а второй – window name / название окна /
SendMessage – функция, для посылания сообщений окну или окнам, вот ее параметры :

1 2 3 4 5 SendMessage( HWND hwnd, // handle на посылаемое окно, его мы нашли функцией FindWindow UINT uMsg, // сообщение для посылки WPARAM wParam, // первый и LPARAM lParam // второй параметры.

В заключении: люди, по чаще смотрите Help по Delphi, особенно полезен файл Win32.hlp. Можно многому научиться :)


Исходный код

Таги: 2D, Рабочий стол


Источник: http://www.kumo.spb.ru/2d-graphics/drawing-on-the-desctop-108.html


Поделись с друзьями



Рекомендуем посмотреть ещё:


Закрыть ... [X]

Как нарисовать мой рабочий стол Как нарисовать? Художественная вышивка лентой


Как рисовать мой рабочий стол Как рисовать мой рабочий стол Как рисовать мой рабочий стол Как рисовать мой рабочий стол Как рисовать мой рабочий стол Как рисовать мой рабочий стол Как рисовать мой рабочий стол Как рисовать мой рабочий стол Как рисовать мой рабочий стол


ШОКИРУЮЩИЕ НОВОСТИ