Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> замена иконки в трее 
:(
    Опции темы
Vl@dimir
Дата 18.3.2005, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 18.3.2005

Репутация: нет
Всего: нет



Всем привет smile
Нужно заменить одну иконку в трее на другую, пишу код:
Код

procedure TMainForm.ReplaceTrayIcon(n: Integer);
var
IconData: TNotifyIconData;
begin
with IconData do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Self.Handle;
uID := 1;
uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallBackMessage := WM_MYICONNOTIFY;
case n of
1: hIcon := LoadIcon(0, 'stop.ico'); [color=red]//иконка для замены[/color]
2: hIcon := Application.Icon.Handle;
end;
StrPCopy(szTip,Application.Title);
end;
Shell_NotifyIcon(NIM_MODIFY, @IconData);
end;


после вызова ReplaceTrayIcon(1) иконка просто исчезает, а не заменяется другой.

Подскажите плиз в чем я набажил? smile
PM MAIL   Вверх
_hunter
Дата 18.3.2005, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



ты б в справку ради интереса заглянул ( по поводу первого параметра LoadIcon() )
когда он NULL второй параметр -- один из
IDI_APPLICATION
IDI_ASTERISK
IDI_ERROR
IDI_EXCLAMATION
IDI_HAND
IDI_INFORMATION
IDI_QUESTION
IDI_WARNING
IDI_WINLOGO



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Vl@dimir
Дата 18.3.2005, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 18.3.2005

Репутация: нет
Всего: нет



с хелпом трабл (с делфарем вроде нет), дадите ссылочку? smile
А как тогда свою иконку загрузить? smile
PM MAIL   Вверх
_hunter
Дата 19.3.2005, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



ссылку на что? на мсдн? -- msdn.microsoft.com
а для своей иконки туда hinstance передать нужно


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Poseidon
Дата 20.3.2005, 04:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Vl@dimir
Цитата
с хелпом трабл (с делфарем вроде нет), дадите ссылочку? 
А как тогда свою иконку загрузить?


Можно скачать DRKB (Delphi Russian Knowledge Base), там вроде есть. А если ссылочку, то смотри в FAQ форума


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
~FoX~
Дата 22.3.2005, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 0
Всего: 68



Код

var
  MyIco: TIcon;
begin
  MiIco := TIcon.Create;
  MyIco.LoadFromFile('c:\MyIco.ico');
  hIcon := MyIco.Handle;
end;
.........

MyIco.Free;

...........
end.


Это сообщение отредактировал(а) ~FoX~ - 22.3.2005, 16:20


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Vl@dimir
  Дата 31.3.2005, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 18.3.2005

Репутация: нет
Всего: нет



Всем привет!! smile
В общем сделал я замену иконки(в трее) в след-щей функции:
Код

procedure TMainForm.ReplaceTrayIcon(n: Integer);
var
IconData: TNotifyIconData;
begin
 with IconData do
begin
 cbSize := SizeOf(TNotifyIconData);
 Wnd := Self.Handle;
 uID := 1;
 uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
 uCallBackMessage := WM_MYICONNOTIFY;
 case n of
 1: hIcon := LoadIcon( hInstance,'1ICON');
 2: hIcon := LoadIcon( hInstance,'2ICON');
 3: hIcon := LoadIcon( hInstance,'3ICON');
{3: hIcon := LoadIcon(0, IDI_APPLICATION);
 4: hIcon := LoadIcon(0, IDI_ERROR);
 5: hIcon := LoadIcon(0, IDI_EXCLAMATION);
 6: hIcon := LoadIcon(0, IDI_HAND);
 7: hIcon := LoadIcon(0, IDI_INFORMATION);
 8: hIcon := LoadIcon(0, IDI_QUESTION);
 9: hIcon := LoadIcon(0, IDI_WARNING);
 10: hIcon := LoadIcon(0, IDI_WINLOGO);}
end;
 StrPCopy(szTip,Application.Title);
 szTip:='текст';//новый хинт
end;
 Shell_NotifyIcon(NIM_MODIFY, @IconData);
end;
 


Где иконки берутся из прекрепленного ресурса (после {$R *.dfm} надо вставить {$R NameOfRes.RES})
Работает вроде без глобальных потрясений, однако иконку exeшника программы дельфя меняет на одну из иконок находящихся в NameOfRes.RES
В чем причина смены и как этого избежать?
PM MAIL   Вверх
~FoX~
Дата 5.4.2005, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 0
Всего: 68



Цитата(Vl @ 31.3.2005, 19:22)
однако иконку exeшника программы дельфя меняет на одну из иконок находящихся в NameOfRes.RES

Не понял, у тебя exe-шник постоянно иконки меняет? Это во время выполнения проги или и после её выгрузки иконка другая остается?

Ой, а я спицовую процедуру писал для того чтоб динамически иконки в екзешнике менять smile

Посмотри каким нить ресурсэксплорером, что там в секции Icon валяется.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Vl@dimir
Дата 9.4.2005, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 18.3.2005

Репутация: нет
Всего: нет



Цитата
Не понял, у тебя exe-шник постоянно иконки меняет? Это во время выполнения проги или и после её выгрузки иконка другая остается?


Значит меняет только один раз при компиляции и больше не меняется, так что процедуру для динамического изменения иконки exe-шника ты писал не зря smile.

Кстате как подсказку в szTip сделать равную какой-нть переменной типа String?

PM MAIL   Вверх
Vl@dimir
Дата 15.4.2005, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 18.3.2005

Репутация: нет
Всего: нет



Так может все таки знает как динамически менять хинт иконки (szTip) ???
PM MAIL   Вверх
_hunter
Дата 15.4.2005, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



так же как и саму иконку...
присваиваеш новое значение и Shell_NotifyIcon(NIM_MODIFY, @IconData);


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.