Wenn ihr direkt über alle Fenster drüber hinweg zeichnen wollt und dazu bequem eine Canvas nehmen wollt, macht es so:
Delphi-Quellcode:
var
DesktopDC: HDC;
DesktopCanvas: TControlCanvas;
begin
DesktopDC := GetDC(0);
if DesktopDC = 0 then
begin
//Hier Fehlerbehandlung einfügen
end
else
try
DesktopCanvas := TControlCanvas.Create;
try
DesktopCanvas.Handle := DesktopDC;
//Hier Zeichnen, z. B.
DesktopCanvas.Draw(0, 0, Application.Icon);
finally
DesktopCanvas.Free;
end;
finally
ReleaseDC(0, DesktopDC);
end;
end;
Wenn ihr dann über den gesamten Bildschirm gemalt habt, könnt ihr mit folgendem aufruf ALLE Fenster neuzeichnen.
RedrawWindow(0, nil, 0, RDW_UPDATENOW or RDW_ALLCHILDREN or RDW_INVALIDATE or RDW_ERASE or RDW_INTERNALPAINT);
Wenn ihr nur in einem Bereich gezeichnet habt, übergebt als zweites den Zeiger auf den rechteckigen Bereich.
Delphi-Quellcode:
var MyRect: TRect;
...
//z. B. MyRect := Rect(...);
RedrawWindow(0, @MyRect, 0, RDW_UPDATENOW or RDW_ALLCHILDREN or RDW_INVALIDATE or RDW_ERASE or RDW_INTERNALPAINT);
Anpassungsmöglichkeiten: Bei GetDC, ReleaseDC, RedrawWindow kann statt der (ersten) 0 auch ein Fensterhandle angegeben werden. Dann wird nicht über den gesamten Bildschirm, sondern nur über ein Fenster zezeichnet (auch von Fremdanwendungen).
Damit könnt ihr Cheats, die in einer Bildschirmecke ein unauffälliges Bildchen erscheinen lassen, programmieren
für eure Spielchen.