Einzelnen Beitrag anzeigen

odin1337

Registriert seit: 16. Apr 2005
1 Beiträge
 
#1

Eigene Event-Handler für Objekte zur Laufzeit

  Alt 27. Jul 2005, 01:00
mit dem Problem schlage ich mich nun schon einen geschlagenen Tag rum, naja komme nicht 1 Byte weiter.

die folgende Funktion ist eigentlich immer wunderbar in der Lage Mitteilungen auf dem Bildschirm auszugeben.
Sie dient mir als Antwort auf gedrückte Tastaturkürzel, wie Lautstärke lauter, leiser und sowas.

Leider habe ich das Problem, dass um die Statusmeldung ein neues Form zur Laufzeit generiert wird und wenn ich nun in einem Spiel bin und ein Lied in Winamp weiter skippe und dann zufällig auf den Bestätigungstext klicke, fliege ich aus dem Spiel raus.

Ich würde nun gerne ein generierten Form ein OnClick erereignis zuweisen, um dann sofort wieder dem Spiel SetWindowForeground() zuzuweisen, leider ist bisher alles gescheitert, meinem TempForm ein OnClick := Bla
Ereignis zuzweisen.

Ich hoffe jemand hat eine Idee für meinen Quelltext.


Lieber Gruß odin

Delphi-Quellcode:
procedure Out2Screen(X, Y, Duration : Integer; FontName : String; FontColor : TColor; FontSize : Byte; ShowText : String);
var
 TempTime : Cardinal;
 TempForm : TForm;
begin
   TempForm := TForm.Create(Form1);
   with TempForm do
    begin
     BorderStyle := bsNone;
     Brush.Style := bsClear;
     with Canvas do
      begin
        Font.Name := FontName;
        Font.Color := FontColor;
        Brush.Style := bsclear;
        Font.Size := FontSize;
        Font.Style := [fsBold];
        Width := TextWidth(ShowText);
        Height := TextHeight(ShowText);
        Left := round(X-(Width/2));
        Top := round(Y-(Height/2));
      end;
     Show;
     SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
     TempTime := GetTickCount;
     repeat
      Canvas.TextOut(0, 0, ShowText);
     until (GetTickCount-TempTime >= Duration);
     Hide;
     FreeAndNil(TempForm);
    end;
end;
  Mit Zitat antworten Zitat