Вы можете использовать поверхность рабочего
стола для вывода любой графики. Этот способ может
понадобится для написания различных
напоминалок, показ праздников. Вы можете
поселить на рабочем столе забавного персонажа из
комикса и многое другое.
Осуществить это можно очень простым способом :
Напишем процедуру для рисования:
procedure TForm1.DeskTopPaint(Sender:Tobject);
var
DeskTop:TCanvas;
begin
DeskTop:=TCanvas.Create;
try
DeskTop.Handle:=GetDC(0);// Получим Handle Рабочего стола
И ВСЕ !!! Далее работаем с DeskTop как с обычным TCanvas.
Например поместим текущую дату :
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 :
SystemParametersInfo( SPI_SETDESKWALLPAPER, 0, PChar('Path'),
SPIF_SENDWININICHANGE );
Где Path - путь к BMP файлу. По умолчанию
устанавливает обои 'В центре', а как поставить
'Размножить' я так и не нашел. Если вы захотите
убрать обои, то в параметре Path надо указать любой
бред, например zzzz. / Только если у вас нет в корне
файла с таким именем :) /
При работе часто требуется обновить рабочий
стол. Делается это вот такой функцией:
SendMessage(FindWindow ('Progman', 'Program Manager'), WM_COMMAND, $A065, 0);
Функцией FindWindow находим, и получаем handle на
нужное окно. Первый параметр - class name / название
класса /, а второй - window name / название окна /
SendMessage - функция, для посылания сообщений окну
или окнам, вот ее параметры :
SendMessage(
HWND hwnd, // handle на посылаемое окно, его мы нашли
функцией FindWindow
UINT uMsg, // сообщение для посылки
WPARAM wParam, // первый и
LPARAM lParam // второй параметры.
В заключении : люди, по чаще смотрите Help по Delphi,
особенно полезен файл Win32.hlp. Можно многому
научиться :) Исходник данного
незатейливого творчества.