Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];

Вниз

Как вставить иконку в трей (туда где часики) ?   Найти похожие ветки 

 
Кот Бегемот ©   (2005-04-14 10:12) [0]

Столкнулся со странной особенностью работы Shell_NotifyIcon.
При параметрах FTrayIcon.hIcon := Application.Icon.Handle; и наличии в Application.Icon иконки с несколькими изображениями в трей попадает всегда stretch-еное изображение 32х32 в максимальном цвете для текущей системы - а не более подходящее 16х16 как ожидалось.

Проверял так:
Создал .ico-файл с картинками 16х16, 24х24, 32х32 и с 2-х, 4-х, 8-и, 16-и битным цветом для каждого размера.
Каждый вариант изображения был пронумерован.
Использовал для проверки TRxTrayIcon.

А теперь вопрос - можно ли сделать чтобы в трее отображалось именно 16х16 при нескольких изображениях в одном .ico ?


 
XP   (2005-04-14 10:26) [1]

Не использовать Application.Icon.Handle.
Грузить иконку напрямую LoadIcon, LoadResourceName и пр.


 
Кот Бегемот ©   (2005-04-14 10:39) [2]

Сам проверял-то перед тем как советовать ???


 
Digitman ©   (2005-04-14 11:04) [3]


> Кот Бегемот ©   (14.04.05 10:39) [2]
> Сам проверял-то перед тем как советовать ?


а что тебя смущает ?

никто не заставляет тебя в кач-ве иконки подставлять Application.Icon.Handle или иконки форм

грузи нужные (в нужном формате) иконки вызовами LoadIcon, LoadResourceName и подставляй их !


 
Чапаев ©   (2005-04-14 11:18) [4]

Используй не LoadIcon(), a LoadImage(), предварительно прочитав хелп. Если всё же хочецца LoadIcon(), то придётся обратить внимание на порядок иконок...


 
GuAV ©   (2005-04-14 11:32) [5]

procedure SetIcon(hWnd: HWND; Create: Boolean);
const Msg: array[Boolean] of DWORD = (NIM_DELETE, NIM_ADD);
var Icon: TNotifyIconData;
begin
 if Create then
   begin
     Icon.hIcon := LoadImage(hInstance, "MAINICON",
       IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);

     Icon.uCallbackMessage := WM_MYTRAY;
     Icon.uFlags := NIF_MESSAGE or NIF_ICON;
   end
 else Icon.uFlags := 0;
 Icon.uID := 0;
 Icon.cbSize := SizeOf(Icon);
 Icon.Wnd := hWnd;
 Shell_NotifyIcon(Msg[Create], @Icon);
end;


 
Кот Бегемот ©   (2005-04-14 11:35) [6]

Спасибо Чапаеву © (14.04.05 11:18)[4] за дельный совет !!!
Помогло именно LoadImage(HInstance,"PROBE123",IMAGE_ICON, 16, 16, 0);
К сожалению я не нашел где можно указывать порядок иконок при загрузке через LoadIcon(). А загружаемое изображение оказывется зависит от текущей битности цвета на десктопе....

2Digitman ©   (14.04.05 11:04) [3]
Уважаемый Сергей.
Прошу Вас в дальнейшем обращать внимание на вопрос, а не на комментарии - ведь вопрос то был "можно ли сделать..."


 
Кот Бегемот ©   (2005-04-14 11:39) [7]

2GuAV ©   (14.04.05 11:32) [5]
Спасибо :) я слишком долго писал ответ :)))


 
Digitman ©   (2005-04-14 11:39) [8]


> Кот Бегемот ©   (14.04.05 11:35) [6]


> вопрос то был "можно ли сделать..."


да конечно можно !
тут и сомнений нет никаких ..


 
Кот Бегемот ©   (2005-04-14 11:44) [9]

Ну вот :) что и ожидалось услышать ....

Спасибо всем ответившим - тему можно закрывать.


 
VMcL ©   (2005-04-14 12:09) [10]

>>Кот Бегемот ©   (14.04.05 11:35) [6]

Вопроса в заглавном посте два:
1. "Как вставить иконку в трей (туда где часики) ?"
2. "можно ли сделать чтобы в трее отображалось именно 16х16 при нескольких изображениях в одном .ico ?"


 
Чапаев ©   (2005-04-14 13:40) [11]

> К сожалению я не нашел где можно указывать порядок иконок при загрузке через LoadIcon().
Порядок задаётся при создании иконок. ;-) Насколько я помню, "иконкой по умолчанию" является тот DDB, который идёт последним.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.017 c
1-1116916210
race1
2005-05-24 10:30
2005.06.06
редактор форм


1-1116477407
Andurbay
2005-05-19 08:36
2005.06.06
Печать в Delphi


14-1116436236
Yegorchic
2005-05-18 21:10
2005.06.06
Статья про Photoschp CS


5-1087272276
Sun bittern
2004-06-15 08:04
2005.06.06
Проблема с событием OnPaint :(


1-1116695621
hasher
2005-05-21 21:13
2005.06.06
можно ли вызвать процедуру по её адресу?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский