Autor Beitrag
MarkusBauer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 70

Win XP Pro
Delphi 7 PE+Indy
BeitragVerfasst: Do 24.01.08 21:21 
Ich möchte einen Text direkt auf dem Desktop anzeigen lassen.

Ich habe im Internet folgenden Code gefunden:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var MyHand: HWND;
    MyDc: HDC;
    MyCanvas: TCanvas;
begin
  MyHand := GetDesktopWindow;
  MyDc := GetWindowDC(MyHand);
  MyCanvas := TCanvas.Create;
  MyCanvas.Handle := MyDC;
  BeginPath(MyCanvas.Handle);
  MyCanvas.Font.Color := clRed;
  MyCanvas.Font.Name := 'Courier New';
  MyCanvas.Font.Size := 30;
  MyCanvas.
  SetBkMode(MyCanvas.Handle,TRANSPARENT);
  EndPath(MyCanvas.Handle);
  MyCanvas.TextOut(100, 20, ausgabetext);


Allerdings hat dieser Code einen Nachteil: Wenn man ein Fenster über den Text zieht, verschwindet der Text. Wenn man ihn auf einem Fenster erstellt, das ständig neu gezeichnet wird (z.B. Spiel) verschwindet der Text direkt wieder. Wie kann ich es erreichen, dass
1. der Text stehen bleibt
2. Ich ihn löschen kann (mit Delphi-Befehl)

Danke
Markus
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 24.01.08 21:40 
Mit dieser Variante wirst du das nicht hinbekommen. Du zeichnest direkt auf den Desktop; da kannst du später nicht mehr drauf zugreifen.

Wenn der Hintergrund nicht transparent sein muss, kannst du ein Fenster mit BorderStyle auf bsNone gesetzt benutzen. Dann wird der Rahmen einfach nicht angezeigt. Löschen kannst du das Formular wie gewöhnt, und in immer im Vordergrund zu halten schaffst du mit FormStyle auf fsStayOnTop gesetzt.