(Gast)
n/a Beiträge
|
Re: OSD Erscheinungsort...
6. Feb 2006, 17:31
Hi.
Zitat von Knotti2005:
Kann ich nicht auch mit
MyCanvas.TextOut(Screen.Width, Screen.Height, TransText);
arbeiten und dann jeweils 50 abziehen oder so?...
Und wenn einer die Taskbar 100px hoch macht?
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;
*klackerdiklackerdicklack* Autsch! Meine Hand!
|
|
Zitat
|