trayIconData : TNotifyIconData;
...
{ add icon }
with TrayIconData do
begin
cbSize := sizeOf( trayIconData );
Wnd := Handle;
uID := 0;
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
uCallbackMessage := WM_ICONTRAY;
hIcon := Application.Icon.Handle;
StrPCopy( szTip, self.Caption );
end;
Shell_NotifyIcon( NIM_ADD, @TrayIconData );
And callback procedure:
procedure TFMain.WMIconTray( var msg : TMessage );
var
pt : TPoint;
begin
case msg.lParam of
{ popup menu }
WM_RBUTTONDOWN:
begin
GetCursorPos( pt );
PopupTray.Popup( pt.x, pt.y );
end;
{ doubleclick }
WM_LBUTTONDBLCLK :
begin
MPopup_NextClick( nil );
end;
{ mouse over }
WM_MOUSEMOVE :
begin
self.Caption := gcsTitle + GetNextWordTime;
with TrayIconData do
begin
StrPCopy( szTip, self.Caption );
uFlags := NIF_TIP;
Shell_NotifyIcon( NIM_MODIFY, @TrayIconData );
end;
end;
end;
end;
And removing after destroy:
procedure TFMain.FormDestroy(Sender: TObject);
begin
...
Shell_NotifyIcon( NIM_DELETE, @trayIconData );
end;
Output:
No comments:
Post a Comment