Einzelnen Beitrag anzeigen

Marphy

Registriert seit: 24. Feb 2005
162 Beiträge
 
Delphi 7 Professional
 
#4

Re: Systray-Icon in eigener Klasse

  Alt 7. Jun 2005, 15:16
Hallo zusammen!

@olli:
Ich glaube nicht, dass er das meint

@barf00s:
Ich bin auch grade bei dem Thema und habe das so gelöst (jetzt nur ausm Kopf):
Delphi-Quellcode:
uses
  {...,} ShellAPI;

type
  TForm1 = class(TForm)
    // ...
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    // ...
  private
    { Private-Deklarationen }
    FOldWndProc: TWndMethod;
    FTrayCallbackMsg: Cardinal;
    procedure MyWndProc(var Msg: TMessage);
  // ...
  end;

// ...

implementation

// ...

procedure TForm1.MyWndProc(var Msg: TMessage);
begin
  if Msg.Msg = FTrayCallbackMsg then begin
    case Msg.LParam of
      WM_LBUTTONDBLCLK: begin
        // ...
      end;
      WM_RBUTTONDOWN: begin
        // ...
      end
      // Weitere abzufragende Tray-Icon-Botschaften...
    end;
  end;
  FOldWndProc(Msg);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  TrayIcon: NOTIFYICONDATA;
begin
  // Tray-Icon hinzufügen
  // ...
  FTrayCallbackMsg := RegisterWindowMessage('MyTrayCallbackMessage');
  TrayIcon.uCallbackMessage := FTrayCallbackMsg;
  // ...

  // Eigene Window Procedure "registrieren"
  FOldWndProc := WindowProc;
  WindowProc := MyWndProc;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  WindowProc := FOldWndProc;
end;
Grüße, Marco
Marco
Wo ein Wille ist, ist auch ein Weg. Aber wo ein Weg ist, ist nicht unbedingt auch ein Wille...
  Mit Zitat antworten Zitat