Programowanie w języku Delphi » FAQ

Jak rysować po pulpicie

  • 2006-09-12 19:09
  • 5 komentarzy
  • 1004 odsłony
  • Oceń ten tekst jako pierwszy
Po pulpicie można rysować jak w zwykłym Canvasie. Wystarczy tylko pobrać uchwyt pulpitu:

Canvas.Handle:=GetWindowDC(GetDesktopWindow);
//tutaj używamy funkcji Canvas'a do rysowania
 
// rysujemy np. kwadrat
Canvas.Rectangle(20, 20, 220, 220);

5 komentarzy

thevirus 2007-09-09 17:20

PiXel: pulpit mozna wyczyścić w ten sposób:

procedure TForm1.Button2Click(Sender: TObject);
var p: PRect;
begin
  New(p);

  p.Left := 20; p.Right := 220;
  p.Top := 20; p.Bottom := 220;

  RedrawWindow(GetDesktopWindow, p, 0, RDW_ERASE or RDW_INVALIDATE or RDW_FRAME or RDW_ALLCHILDREN);

  Dispose(p);
end;

PiXel 2006-05-22 14:28

Sanjuro: wszystko działa jak należy, tylko jak wyczyścic canvas pulpitu?

Sanjuro 2005-06-26 11:24

Do rysowania bezposrednio po pulpicie trzeba wyciagnac okno znajdujace sie najnizej (pulpit) ponizej jak to zrobic (dziala w Win9x na 100%, w WinXP z tez wg wstepnych testow):

function GetDesktopListViewHandle: THandle;
var 
  S: String;
begin
  Result := FindWindow('ProgMan', nil);
  Result := GetWindow(Result, GW_CHILD);
  Result := GetWindow(Result, GW_CHILD);
  SetLength(S, 40);
  GetClassName(Result, PChar(S), 39);
  if PChar(S) <> 'SysListView32' then
  Result := 0;
end;


 nastepnie podobnie jak w przykladzie powyzej tyle ze korzystamy z zrobionej funkcji do uchwycenia okna pulpitu/tapety np:

Canvas.Handle:=GetWindowDC(GetDesktopListViewHandle);
Canvas.Rectangle(20, 20, 220, 220);

stach.oo 2004-05-14 15:43

no dobrze, wypowiedzi tego typu jest PEŁNO na necie, ale tutaj tak naprawdę nie rysujemy po pulpicie tylko po ekranie, jak w takim razie rysować po pulpicie (czyli pod tym "czyś" co jest pod ikonkami)