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

Вниз

Tray   Найти похожие ветки 

 
alvin   (2002-12-04 12:23) [0]

Мастера, помогите, ложу иконку в TaskBar, но как только навожу на нее мышь она (иконка) исчезает. Что не так?


 
[lamer]Barmaglot ©   (2002-12-04 13:15) [1]

Иконка не связана с приложением, поэтому и исчезает...

а вообще то RTFM: http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988624981&n=15


 
Song ©   (2002-12-04 13:32) [2]

Точнее не связана с сообщением, которое должно обрабатываться у тебя в приложении.


 
alvin   (2002-12-05 06:36) [3]

Имеете в виду uCallbackMessage?
Вот как это у меня объявлено

const WM_MYTRAYNOTIFY = WM_USER + 123;
var
n:integer;
var w_tray:tNOTIFYICONDATA;
...
...
procedure WndProc(..)
WM_CREATE:
...
Shell_NotifyIcon(NIM_ADD, @w_tray);
WM_MYTRAYNOTIFY:
...
WM_CREATE:
Shell_NotifyIcon(NIM_DELETE, @w_tray);

with w_tray do begin
cbSize := sizeof(tNOTIFYICONDATA);
Wnd := W_WND;
uID := n;
uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
uCallbackMessage := WM_MYTRAYNOTIFY;
hIcon := Application.Icon.Handle;
szTip:="";


 
Song ©   (2002-12-05 07:35) [4]

Это-то понятно. А кто его обрабатывает? Кто обрабатывает WM_MYTRAYNOTIFY?


 
alvin   (2002-12-05 10:35) [5]

WM_MYTRAYNOTIFY:
ShowPopup;
WM_DESTROY:
..

(или я чего-то не понял в вопросе)


 
Song ©   (2002-12-05 15:53) [6]

да, сорри, стормозил. А как у Вас устанавливается обработчик окна и где Вы вызываете старый обработчик?


 
Diamond Cat ©   (2002-12-05 21:54) [7]

может я чего не понял но почему на WM_CREATE следует
Shell_NotifyIcon(NIM_DELETE, @w_tray);


 
Kiril45   (2002-12-06 01:19) [8]

const WM_TRAY = WM_USER + 100;
....
type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
Item11: TMenuItem;
Item21: TMenuItem;
Exit1: TMenuItem;
Image1: TImage;
procedure FormCreate(Sender: TObject);
procedure MouseInTray(var Msg: TMessage); message WM_TRAY;
.....
Tray: TNotifyIconData;
.....
procedure TForm1.FormCreate(Sender: TObject);
begin
with Tray do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Self.Handle;
uID := 100;
uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallBackMessage := WM_TRAY;
hIcon := Image1.Picture.Icon.Handle;
szTip := "Тест";
end;
Form1.Caption := "Инспектор сети";
Shell_NotifyIcon(NIM_ADD, @Tray);
end;

procedure TForm1.MouseInTray(var Msg: TMessage);
var P: TPoint;
begin
if Msg.LParam = WM_RBUTTONDOWN then
begin
GetCursorPos(P);
PopupMenu1.Popup(P.X, P.Y);
end;
Application.ProcessMessages;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Application.MessageBox("Завершить программу?","Тест",MB_OKCANCEL)<> IDOK
Then
Action := caNone
else
begin
Shell_NotifyIcon(NIM_DELETE, @Tray);
Action := caFree;
Application.Terminate;
end;
end;


 
alvin   (2002-12-06 07:03) [9]

Diamond Cat енто я напортачил вместо WM_CREATE следует ситать WM_DESTROY (здесь темно и клавишь не видно :)


 
alvin   (2002-12-06 07:08) [10]

С DefWindowProc у меня вроде все в порядке (не привожу код, чтобы не захламлять место) меня интересует значение uID, в моем случае оно вроде нулевое, может ему надо приписать какое-то другое значение?


 
Song ©   (2002-12-06 08:34) [11]

Поставьте uID равный 1.



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

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

Наверх




Память: 0.49 MB
Время: 0.019 c
1-62496
Palladin
2003-01-09 16:22
2003.01.20
вызов метода потока


1-62614
EvgeniyM
2003-01-09 13:40
2003.01.20
Вопрос по TPopupMenu


7-62883
cecist
2002-11-04 16:09
2003.01.20
Как программно вводить пароли в Windows2000


14-62805
Дмитрий К.К.
2003-01-01 07:08
2003.01.20
Именинники 1 января


1-62505
dinn
2003-01-10 14:14
2003.01.20
RichEdit и align justify