Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   OSD Erscheinungsort... (https://www.delphipraxis.net/62551-osd-erscheinungsort.html)

Knotti2005 6. Feb 2006 11:58


OSD Erscheinungsort...
 
Ich habe beim suchen in der DP folgenden Code gefudnen mit dem man ein OSD erzeugen kann welches nach 2 Sekunden wieder verschwindet..

Delphi-Quellcode:
procedure WriteText(TransText: string);
var
  MyHand: HWND;
  MyDc: HDC;
  MyCanvas: TCanvas;
  Start : Longint;
begin
MyHand := GetDesktopWindow;
MyDc := GetWindowDC(MyHand);
MyCanvas := TCanvas.Create;
MyCanvas.Handle := MyDC;
BeginPath(MyCanvas.Handle);
MyCanvas.Font.Color := clred;
MyCanvas.Font.Name := 'Arial';
MyCanvas.Font.Size := 15;
SetBkMode(MyCanvas.Handle,TRANSPARENT);
EndPath(MyCanvas.Handle);
MyCanvas.TextOut(20, 20, TransText); //Hier die Positionsdaten mit X und Y, wo der Text beginnen soll
Start := GetTickCount;
repeat
Application.ProcessMessages
until (GetTickCount - Start > 2000);
InvalidateRect(0, nil, true);
end;
Nun zu meiner Frage wie kann ich erreichen das der Text immer Rechts Unten über der Taskbar erscheint...

Delphi-Quellcode:
MyCanvas.TextOut(20, 20, TransText); //Hier die Positionsdaten mit X und Y, wo der Text beginnen soll

s.h.a.r.k 6. Feb 2006 12:33

Re: OSD Erscheinungsort...
 
Hey.

Guckst du mal hier. Im letzten Beitrag steht alles was du brauchst!

Knotti2005 6. Feb 2006 16:25

Re: OSD Erscheinungsort...
 
Kann ich nicht auch mit
Delphi-Quellcode:
   MyCanvas.TextOut(Screen.Width, Screen.Height, TransText);
arbeiten und dann jeweils 50 abziehen oder so?...

Wie stell ich das an

Waldteufel 6. Feb 2006 16:31

Re: OSD Erscheinungsort...
 
Hi.

Zitat:

Zitat von Knotti2005
Kann ich nicht auch mit
Delphi-Quellcode:
   MyCanvas.TextOut(Screen.Width, Screen.Height, TransText);
arbeiten und dann jeweils 50 abziehen oder so?...

Und wenn einer die Taskbar 100px hoch macht? :mrgreen:
Das stimmt schon, was hier steht... ;-)

Wenn schon, dann so:
Delphi-Quellcode:
var
  SysTray : THandle;
  Rect : TRect;
  x, y, iTaskBar, iScreenHeight, iScreenWidth : Integer;
  TransText : string;

  MyHand: HWND;
  MyDc: HDC;
  MyCanvas: TCanvas;
  Start : Longint;
begin
  TransText := 'Huhu! Ich bin ein OSD-Text!';

  SysTray := FindWindow('Shell_TrayWnd', nil);
  if SysTray <> INVALID_HANDLE_VALUE then begin
    if GetWindowRect(SysTray, Rect) then
      iTaskbar := Rect.Bottom - Rect.Top;
  end;

  // Bildschirmmaße erhalten
  iScreenHeight := Screen.Height;
  iScreenWidth := Screen.Width;

  // direkt über der Uhr platzieren
  x := iScreenWidth - { hier die Breite des Textes einsetzen!!! };
  y := (iScreenHeight - iTaskbar) - { hier die Höhe des Textes einsetzen!!! };

  MyHand := GetDesktopWindow;
  MyDc := GetWindowDC(MyHand);
  MyCanvas := TCanvas.Create;
  MyCanvas.Handle := MyDC;
  BeginPath(MyCanvas.Handle);
  MyCanvas.Font.Color := clred;
  MyCanvas.Font.Name := 'Arial';
  MyCanvas.Font.Size := 15;
  SetBkMode(MyCanvas.Handle,TRANSPARENT);
  EndPath(MyCanvas.Handle);

  MyCanvas.TextOut(x, y, TransText); // <--

  Start := GetTickCount;
  repeat
    Application.ProcessMessages
  until (GetTickCount - Start > 2000);
  InvalidateRect(0, nil, true);
end;
:coder: *klackerdiklackerdicklack* Autsch! Meine Hand! :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz