Oft liest man in den unterschiedlichen Foren die Frage wie man seine Anwendung dazu bekommt sich beim Minimieren in den TNA Bereich zu verschieben. Unter anderem findet man hier in der Delphi Library einen ausführlicher Beitrag über dieses Thema:
...Icons in die TNA hinzufügen, ändern und löschen?
Das normale Minimieren einer Anwendung zur Taskbar wird von Windows visuell dargestellt. Man sieht also optisch das das Fenster der Anwendung zur Taskbar verschoben wird. Implementiert man nun aber die Funktion, dass die Anwendung nicht zur Taskbar sondern in den TNA Bereich verschoben wird, geht diese Effekt nach hinten los da es optisch aussieht als würde die Anwendung zur Taskbar verschoben wird.
Die folgende Funktion zeigt wie man diesen optischen "Minimieren-Effekt" nicht zur Taskbar sondern in den TNA Bereich programmiert.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| type TTrayAnimationType = (tatMinimize, tatMaximize);
function TrayAnimation (AForm: TForm; AType: TTrayAnimationType): Boolean; var HandleTray: HWND; RectForm, RectTray: TRect; begin result := False;
HandleTray := FindWindowEx (FindWindow ('Shell_TrayWnd', nil), 0, 'TrayNotifyWnd', nil); if (HandleTray <> 0) then if GetWindowRect (AForm.Handle, RectForm) then if GetWindowRect (HandleTray, RectTray) then case AType of tatMinimize: if DrawAnimatedRects (AForm.Handle, IDANI_CAPTION, RectForm, RectTray) then result := True; tatMaximize: if DrawAnimatedRects (AForm.Handle, IDANI_CAPTION, RectTray, RectForm) then result := True; end; end; |
Wichtig dabei ist vor allem die Windows Funktion
DRAWANIMATEDRECTS. Diese sorgt für den optischen Effekt.
Der Aufruf dieser Funktion ist simpel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Button1Click(Sender: TObject); begin TrayAnimation (Self, tatMinimize); end;
procedure TForm1.Button2Click(Sender: TObject); begin TrayAnimation (Self, tatMaximize); end; |
Moderiert von Narses: Beitrag geprüft und einsortiert am 21.04.2008