Форум: "WinAPI";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c