![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
KOLTrayIcon не может корректно отобразить 256-цветную ico в tray
Ал © (2003-10-17 11:02:00)Захотелось использовать в Tray 256-цветную пиктограмму, но она отображается с цветовыми искажениями, хотя эта же пиктограмма прекрасно отображается и в заголовке окна и в Explorer. Подскажите, в чем дело?
Yury Sidorov (2003-10-17 22:19:00) [1]2 mdw: Отображается правильно 256 цветная иконка в трее на Windows 98 и 2000? Слабо верится, т.к. похоже во всех Windows кроме ХР для трея используется 16-цветный imagelist.
mdw (2003-10-17 14:54:00) [2]>А насчёт цветовых искажений - это глюк Винды имхо, т.к. в ХР иконки отображаются нормально, а во всех более ранних версиях максимум - 16 цветов
У меня отображаются нормально и под w2000 и под w98.
mike.dld (2003-10-17 13:04:00) [3]> BorisMor © (17.10.03 12:25) [2]
Юзаю такое и всё работает:
procedure AddTrayIcon(hWindow: THandle; ID: Cardinal; Icon: HICON; CallbackMessage: Cardinal; Tip: string; Cmd: Byte);
var NID : tNotifyIconData;
begin
FillChar(NID,SizeOf(TNotifyIconData),0);
with NID do begin
cbSize := SizeOf(TNotifyIconData);
Wnd := hWindow;
uID := ID;
if Cmd <> NIM_DELETE then begin
uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
uCallbackMessage := CallbackMessage;
hIcon := Icon;
if Length(Tip) > 63 then SetLength(Tip,63);
lstrcpyn(szTip,PAnsiChar(Tip),63);
end;
end;
Shell_NotifyIcon(Cmd, @NID);
end;
А насчёт цветовых искажений - это глюк Винды имхо, т.к. в ХР иконки отображаются нормально, а во всех более ранних версиях максимум - 16 цветов
Ал (2003-10-17 12:43:00) [4]БорисМору:
TrayIcon.Tooltip := 'Мой хинт';
BorisMor (2003-10-17 12:25:00) [5]Подскажите как хинт добаваить к TrayIcon ?
(Что бы при подведение к иконуе появллся)
mdw (2003-10-17 12:08:00) [6]У меня тоже самое. Это проблема LoadIcon. Также заметил, что LoadIcon грузит иконку с размерами по умолчанию(32X32), т.е если исходный размер 16X16, то масштабирует в 32X32. А при выводе в TrayIcon происходит обратное масштабирование. Искажения после двойного масштабирования получаются не слабые...
Лечится использованием вместо LoadIcon -
LoadImage(hInstance, 'ZJMCTRLMAINFORM_TRAYICON1', IMAGE_ICON, 16, 16, 0)