Sooo, für den Thread-Ersteller nun auch mal die Quick and dirty Methode, die ich gerade ausprobiert habe, für sein Vorhaben:
Form1 ist die Form, auf die gezeichnet wird.
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var
FCanvas : TCanvas ;
FHandle : THandle ;
begin
// Eigene Form maximieren und transparent schalten
// (geht irgendwie mit clBtnface nicht, deswegen habe ich erstmal die Form.Color auf clWhite gesetzt)
self.BorderStyle := bsNone ;
self.WindowState := wsMaximized ;
self.TransparentColor := true ;
self.Color := clWhite ;
self.TransparentColorValue := clWhite ;
self.FormStyle := fsStayOnTop ;
FHandle := self.Handle ;
// Canvas kreieren
FCanvas := TCanvas.Create;
FCanvas.Handle := GetWindowDC(FHandle) ;
// Fenster als layered und Durchklickbar setzen
SetWindowLong(FHandle, GWL_EXSTYLE, GetWindowLong(FHandle, GWL_EXSTYLE) or WS_EX_TRANSPARENT or WS_EX_LAYERED);
// Desktop als Fenster-Parent zuweisen
SetWindowLong(FHandle, GWL_HWNDPARENT, 0);
// Rechteck zeichnen :D
FCanvas.Pen.Color := clLime;
FCanvas.Rectangle(1,1,100,100);
// Canvas wieder freigeben
FreeAndNil(FCanvas) ;
end;