Главная страница
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.012 c
1-31724
AFrolov
2002-10-01 10:48
2002.10.10
Как можно отследить перерисовку только Title ов у DBGrid.


1-31812
kamonavt
2002-10-01 21:00
2002.10.10
mdi-форма -> dll


3-31598
Igoryan
2002-09-18 10:48
2002.10.10
Помогите!!


1-31790
lakich
2002-10-02 07:24
2002.10.10
Подобие RemoteAdmina


1-31727
yaJohn
2002-09-30 12:36
2002.10.10
Вставить ActiveX в документ.