Entwickler-Ecke
Windows API - Icon in Tray
Stevie - Mo 02.06.03 13:15
Titel: Icon in Tray
Hi,
ich hab folgendes Problem: Ich hab mein Programm bereits aus der Taskleiste in den Tray verbannt. Jetzt möchte ich bei einem bestimmten Ereignis das Icon verändern. Am besten wäre eine kleine Animation. Ich hab das schon versucht:
Delphi-Quelltext
1: 2: 3:
| myIcon.LoadFromFile('NewMail.ico'); <-- var myIcon: TIcon; TrayIcon.hIcon := myIcon.Handle; Shell_NotifyIcon(NIM_MODIFY, @TrayIcon); |
Das Icon ändert sich nicht und wenn ich das Fenster wiederherstelle, kann ich es nicht wieder minimieren.
MaxiTB - Mo 02.06.03 13:53
Kann dir nur soviel sagen - der Code ist korrekt - bis auf eine Kleinigkeit ...
Wo werden die restlichen Eigenschaften von TrayIcon gesetzt ?
Da gehört ja noch einiges dazu - ganz wichtig cbSize usw.
Tino - Mo 02.06.03 13:55
Hallo,
wo genau ist die Variable TrayIcon definiert? In der Procedure oder global zum Beispiel in der Form Deklaration?
Gruß
Tino
Stevie - Mo 02.06.03 13:56
Die hab ich ja schon vorher gesetzt, wenn ich das Programm starte:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TfrmMyProgram.FormShow(Sender: TObject); begin ShowWindow(Application.Handle, SW_HIDE); with TrayIcon do begin cbSize := SizeOf(TrayIcon); Wnd := Handle; uID := 0; uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; uCallbackMessage := IC_CLICK; hIcon := Application.Icon.Handle; szTip := 'Mein Programm'; end; Shell_NotifyIcon(NIM_ADD, @TrayIcon); end; |
Tino hat folgendes geschrieben: |
In der Procedure oder global zum Beispiel in der Form Deklaration? |
Global deklariert.
MaxiTB - Mo 02.06.03 14:01
TrayIcon ist also keine lokale Variable ... aha ...
Ups ...
Hast du dir schon mal angeschaut, was Handle für einen Wert hat ?
Unter C++ z.B. bekommt man für HWND=NULL wenn es nicht sichtbar ist (hide) !
Stevie - Mo 02.06.03 14:05
Nee, hab ich noch nicht nachgeschaut, aber das Anlegen des Icons funzt ja. Ich kann das Icon nur nicht wieder ändern. Oder klappt das nur, wenn das Fenster bzw. die Applikation wieder aktiv/sichtbat ist? Ich probier mal was aus...
Tino - Mo 02.06.03 14:08
Das Record TrayIcon müsste also noch gültige Werte haben. Dann sollte es eigentlich auch funktionieren.
Gruß
Tino
MaxiTB - Mo 02.06.03 14:10
Eigentlich nicht - und du änderst ja auch nicht das Hwnd ... also eigentlich - wie am Anfang gesagt, paßt alles.
Einzig und alleine beim Anlagen muß das Fenster sichtbar sein (oder besser gesagt ein gültiges Handle haben).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!