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

Вниз

Событие при клике на иконке в трее   Найти похожие ветки 

 
Осирис ©   (2002-10-01 13:51) [0]

Добрый день:

Поместил иконку в трей вот таким способом:

function TaskBarAddIcon( hWindow : THandle; ID : Cardinal; ICON : hicon;
CallbackMessage : Cardinal; Tip : String ) : Boolean;
var NID : TNotifyIconData;
begin
FillChar( NID, SizeOf( TNotifyIconData ), 0 );
with NID do
begin
cbSize := SizeOf( TNotifyIconData );
Wnd := hWindow;
uID := ID;
uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
uCallbackMessage := CallbackMessage;
hIcon := Icon;
if Length( Tip ) > 63 then SetLength( Tip, 63 );
StrPCopy( szTip, Tip );
end;
Result := Shell_NotifyIcon( NIM_ADD, @NID );
end;

-------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var icon : TICON;
hic : HICON;
begin
FHwnd:=AllocateHwnd(TrayWndProc);

icon:=TIcon.Create;
icon.LoadFromFile("d:\_s_Garbage\new.ico");

if Icon <> nil then hIc := Icon.handle
{$IFDEF WIN32}
else hIc := INVALID_HANDLE_VALUE;
{$ELSE}
else hIc := 0;
{$ENDIF}

TaskBarAddIcon(Form1.Handle, 1, hic, KREY_TRAYICON, "iCONNN");
end;

-----

procedure TForm1.FormCreate(Sender: TObject);
begin
KREY_TRAYICON:=RegisterWindowMessage("test");
end;


Теперь хочу обрабатывать события поступающие от иконки в трее. Делаю так:

procedure Tform1.TrayWndProc(var Message:TMessage);
var CurPos:Tpoint;
i,index:integer;
begin
with Message do
begin
If (Msg=KREY_TRAYICON) then
begin
WM_LBUTTONDBLCLK:
begin
end;
WM_RBUTTONDOWN:
end;
end;
end;
end;

Запускаю. Нажимаю на кнопку - в трее появляется иконка. Щелкаю на ней - в отладчике видно, что выполняется процедура
procedure Tform1.TrayWndProc(var Message:TMessage);

Но вот это условие никогда не выполняется:

If (Msg=KREY_TRAYICON) then

В чем может быть дело ?


P.S Пожалуйста не советуйте смотреть RXLib - уже смотрел.


 
Петя   (2002-10-01 14:27) [1]

FHwnd:=AllocateHwnd(TrayWndProc);
Где используешь ?


 
Осирис ©   (2002-10-01 14:40) [2]

Был не прав - поправил:

Теперь так:

в onCreate формы :

FHwnd:=AllocateHwnd(TrayWndProc);

в clicked Button1 при помещении иконки:

TaskBarAddIcon(FHwnd, 1, hic, KREY_TRAYICON, "iCONNN");

Сама процедура:

with Message do
begin
if (Msg<>Krey_TrayIcon) then
Result:=DefWindowProc(FHwnd,msg,wparam,lparam);

If (Msg=KREY_TRAYICON) then
begin

Вроде все стало ОК.


Спасибо за помощь :)



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

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

Наверх




Память: 0.47 MB
Время: 0.021 c
1-31845
Вованчик
2002-09-28 18:51
2002.10.10
Всплывающая подсказка.


4-32077
Alexw
2002-08-22 12:50
2002.10.10
Помогите TAPI!!!


1-31718
diMAN
2002-09-27 18:20
2002.10.10
Системная кнопка


3-31608
Artur K
2002-09-18 21:23
2002.10.10
Paradox по сети как работать?


1-31763
StarCon
2002-10-01 14:31
2002.10.10
логика разбора таблиц