Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2011, 20:56   #1
Vadik(R)
Пользователь
 
Регистрация: 10.03.2008
Сообщений: 68
По умолчанию Загрузить Собственную Иконку

Добрый вечер, форумчане!
В недавней теме у меня возник вопрос, как загрузить собственную иконку в Tray. Так как Delphi мне ближе по душе, решил сделать этот момент вначале в этой среде, на C++ всегда переписать смогу. Так вот, у меня проблема такая. Есть иконка icon.ico, в которой содержатся иконки разных форматов - от 16 x 16 до 128 x 128. Мне надо, чтобы эта иконка прогрузилась в Tray. Решил вначале сделать так. Написать в icon.rc:
Код:
TrayIcon ICON icon.ico
Создать файл ресурсов и подключить к проекту. А далее написать:
Код:
NIData.hIcon := LoadIcon(GetModuleHandle(nil), 'TrayIcon');
В этом случае, нужная иконка в трее появлялась, но в тоже время, из-за строки подключения ресурсов, она появилась и у самого приложения. Потому я решил сделать так. В icon.rc написать:
Код:
TrayIcon RCDATA icon.ico
Но теперь иконка перестала грузится. Поискав новые функции и поэксперемнтировав с ними, я получил вот это::
Код:
NIData.hIcon := LoadIcon(LoadResource(0, FindResource(LoadLibrary(PChar(ParamStr(0))), 'icon.res', RT_RCDATA)), 'TrayIcon');
Знаю, что неправильно
Подскажите, пожалуйста, какой стоит указать тип ресурса в файле ресурсов и как потом загрузить из него свою иконку? Так, чтобы иконка появлалсь только в Tray, а у приложения осталась по умолчанию. Заранее спасибо
Vadik(R) вне форума Ответить с цитированием
Старый 15.10.2011, 21:34   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Рукалицо...

NIData.hIcon:=LoadIcon(HInstance,'T RAYICON');
Человек_Борща вне форума Ответить с цитированием
Старый 15.10.2011, 22:06   #3
Vadik(R)
Пользователь
 
Регистрация: 10.03.2008
Сообщений: 68
По умолчанию

А откуда брать hInstance? У меня консольное приложение.
А если написать GetModuleHandle(nil), то тоже не работает
Vadik(R) вне форума Ответить с цитированием
Старый 15.10.2011, 22:22   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

оно есть в sysinit.pas который загребается компилятором автоматом

Последний раз редактировалось Человек_Борща; 15.10.2011 в 22:26.
Человек_Борща вне форума Ответить с цитированием
Старый 16.10.2011, 00:17   #5
Vadik(R)
Пользователь
 
Регистрация: 10.03.2008
Сообщений: 68
По умолчанию

Вы правы, HInstance есть.
Но проблема в другом, иконка грузится не та, что надо. Точнее, видимо вообще ерунда какая-то грузится, раз иконка остаётся прозрачной.
Прилагаю проект, если не сложно, гляньте.
Вложения
Тип файла: rar TestConsole.rar (17.7 Кб, 7 просмотров)
Vadik(R) вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
загрузить из imagelist иконку окна Человек_Борща Общие вопросы Delphi 1 14.11.2010 14:06
popupmenu загрузить иконку с файла Horus92 Помощь студентам 2 26.07.2010 20:55
Как создать собственную CMS? Fokeev PHP 3 17.03.2009 12:45
Как создать собственную ДЛЛ на Дельфи SkyM@n Помощь студентам 5 02.12.2007 07:27