Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

Мигание в System Tray   Найти похожие ветки 

 
AloneAli   (2004-03-02 15:23) [0]

Как заставить мигать иконку программы в System Tray?


 
Asdor ©   (2004-03-02 16:13) [1]

Взять две иконки и менять их через 0.5 сек...


 
AloneAli   (2004-03-03 06:36) [2]

А по другому нельзя? О том, что ты предложил и сделал, но думал может есть другой способ, более элегантнее...


 
Vlad25 ©   (2004-03-03 21:01) [3]

Можешь использовать LMD TrayIcon (LMD Components), но там как раз реализуется "неэлегантный" способ. Видимо, больше это никак не сделать.


 
Klev   (2004-03-04 16:20) [4]

Лучшим советом всегда является наглядный пример:
(На работоспособность не проверялось, но в теории должно работать.)

Удаление иконки.
handle - hwnd окна
n - число - индетификатор TrIc
TrayIcon - переменная, которая = true если иконка существует, и соответственно false, если Explorer перезагрузился (глюки, итп) и иконки более нет в трее. (Что-то типа AVPmon)

const
  WM_MYTRAYNOTIFY = WM_USER + 123; - индетификатор сообщения, посылаемого окну, при проишествии всякой всячины с иконкой в трее (щелчок мышью, итп) - обработку этого сообщение надо реализовать в оконной процедуре.

var
  TrayIcon, i:bool;
  hicon1,hicon2:Dword;

первым делом подгружаем иконки:

hIcon1 := loadicon(hInstance,makeintresource(3)); //твоя иконка взята из ресурсов, ее ид=3 -первоначальная иконка
hIcon2 := loadicon(hInstance,makeintresource(4)); //твоя иконка взята из ресурсов, ее ид=4 -иконка, на которую будет изменяться первоначальная иконка через 0.5 сек.
nidata -TNotifyIconData - структура, описание которой приведено в MSDN.      
     

procedure DeleteTrayIcon(n: integer);
var
 nidata: TNotifyIconData;
begin
 with nidata do
   begin
     cbSize := SizeOf(TNotifyIconData);
     Wnd := Handle;
     uID := n;
   end;
 Shell_NotifyIcon(NIM_DELETE, @nidata);
TrayIcon:=false;
end;

Создание иконки.
procedure CreateTrayIcon(n: integer);
var
 nidata: TNotifyIconData;
begin
 with nidata do
   begin

     cbSize := SizeOf(TNotifyIconData);
     Wnd := Handle;
     uID := n;
     uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
     uCallBackMessage := WM_MYTRAYNOTIFY;
     hIcon := hicon1; //твоя иконка взята из ресурсов, ее ид=3 -первоначальная иконка
     szTip := "My icon"; //не более 60 символов
   end;
 Shell_NotifyIcon(NIM_ADD, @nidata);
TrayIcon:=true; //- иконка создана
end;

процедура модификации иконки, ее надо повесить на таймер.
procedure ModTrayIcon(n: integer;ho,mi,se:word);
var
 nidata: TNotifyIconData;
 s:string;
 r:word;
begin
if trayicon=false then exit;
 s:= pchar("My Tricon");
 with nidata do
   begin

     cbSize := SizeOf(TNotifyIconData);
     Wnd := Handle;
     uID := n;
     uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
     uCallBackMessage := WM_MYTRAYNOTIFY;
if i=false then begin      
hIcon := hicon2;//меняем на новую иконку
i:=true;
end else begin
hIcon := hicon1;//меняем на первоначальную иконку
end;      
szTip[r]:=Pchar("My icon");
     end;
 if not Shell_NotifyIcon(NIM_MODIFY, @nidata) then begin
//если по к-л причинам нашей иконки больше нет, то воссоздаем ее
deletetrayicon(1);
createtrayicon(1);
 end;
end;

Это кажется все, что надо. Возможно что-то забыл. Хотя вышеприведенного материала должно хватить даже для написания туториала  по этому вопросу.


 
AloneAli   (2004-03-05 07:02) [5]


> Klev   (04.03.04 16:20) [4]


> hIcon1 := loadicon(hInstance,makeintresource(3)); //твоя
> иконка взята из ресурсов, ее ид=3 -первоначальная иконка

Хотя я уже сделал мигание в SystmeTray"е, у меня единственный вопрос, как засунуть иконку в ресурсы?


 
Gero ©   (2004-03-05 08:59) [6]

> как засунуть иконку в ресурсы

Image Editor или brcc32.exe


 
AloneAli   (2004-03-05 10:27) [7]

Спасибо!



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

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
1-1081762312
s
2004-04-12 13:31
2004.05.02
Работа с INI файлами


1-1082155165
mouse_web
2004-04-17 02:39
2004.05.02
Не читается текстовый файл


14-1081608838
SergeySh
2004-04-10 18:53
2004.05.02
Диск к книге DirectX (графика в проектах), автор - Михаил Краснов


14-1081747815
Ega23
2004-04-12 09:30
2004.05.02
Даже и не знаю куда тему засунуть, всё-таки не Delphi :-)


3-1081251223
Multy
2004-04-06 15:33
2004.05.02
Киньте ссылки как работать в Delphi с MySQL