Ik vermoed dat Henkie gelijk heeft en dat het wel degelijk aan NLDTrayIcon ligt. Zie ook MSDN: ImageList_GetIcon.
Wil je de schuine code eens toevoegen aan TNLDCustomTrayIcon.MakeInTray?
Code:
procedure TNLDCustomTrayIcon.MakeInTray(Flag: Byte);
begin
if ([csDesigning,csLoading] * ComponentState) <> [] then
Exit;
if FActive and ShouldShowInTray then
begin
with MNic do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Self.Wnd;
uID := 1;
uCallbackMessage := WM_TRAYICON;
if FileExists(FFilename) then
begin
FIcon.LoadFromFile(FFilename);
hIcon := FIcon.Handle;
end
else
if (Assigned(FImageList)) and (FImageIndex > -1) then
begin
if hIcon <> 0 then
DestroyIcon(hIcon);
hIcon := ImageList_GetIcon(FImageList.Handle, FImageIndex, 0)
end
else
hIcon := Application.Icon.Handle;
uFlags := NIF_MESSAGE or NIF_ICON;
if FShowHint then
begin
uFlags := uFlags or NIF_TIP;
FillChar(szTip, Length(szTip), 0);
StrPCopy(szTip, FHint);
end;
end;
if Flag = 0 then
Shell_NotifyIcon(NIM_ADD, @MNic)
else
Shell_NotifyIcon(NIM_MODIFY, @MNic);
end
else
Shell_NotifyIcon(NIM_DELETE, @MNic);
end;
Bookmarks