![]() |
|
|
#1
|
||||
|
||||
|
Доброго времени суток!
Помогите пожалуйста разобраться с иконкой на TrayBar'е. Я нашёл вот это : Код:
procedure TForm1.Button3Click(Sender: TObject);
var
no: TNotifyIconData;
Hicon1: HIcon;
begin
//Помещение иконки в Tray Bar
HIcon1:=ExtractIcon(Handle,'NsS.ico',0);
with no do
begin
cbSize:=Sizeof(TNotifyIconData);
Wnd:=Handle;
uID:=0;
UFlags:=NIF_MESSAGE+NIF_ICON+NIF_TIP;
SzTip:='NsS';
HIcon:=HIcon1;
//Определяемое пользователем сообщение
uCallBackMessage:=WM_USER+0;
end;
Shell_NotifyIcon(NIM_ADD,@no);
end;Всё работает, иконка появляется, но я не могу понять, как добавить какое-то действие или контекстное меню к иконке. Подскажите, если кто знает Если существуют способы лучше, чем у меня, напишите... Заранее спасибо! |
|
#2
|
|||
|
|||
|
Shell_NotifyIcon принимает два параметра: dwMessage - идентификация действия, которое надлежит выполнить (NIM_ADD - добавить иконку в трей, NIM_DELETE - удалить, NIM_MODIFY - изменить) и указатель на запись типа TNotifyIconData. Эта запись выглядит так (описана в ShellAPI):
Код:
TNotifyIconDataA = _NOTIFYICONDATAA;
TNotifyIconData = TNotifyIconDataA;
_NOTIFYICONDATAA = record
{ размер записи }
cbSize: DWORD;
{ идентификатор окна, которое будет получать
сообщения о нажатиях и перемещениях мыши на иконке в трее
Wnd: HWND;
{ номер пиктограммы. Если вы размещаете только одну иконку - указываете 0 }
uID: UINT;
{ флаги (NIF_ICON, NIF_MESSAGE, NIF_TIP) }
uFlags: UINT;
{ сообщение, которое посылается окну при
попадании мыши на иконку в трее }
uCallbackMessage: UINT;
{ Хэндл иконки }
hIcon: HICON;
{ текст всплывающей подсказки }
szTip: array [0..63] of AnsiChar;
end; |
|
#3
|
||||
|
||||
|
А не могли бы Вы написать пример?, потому что с моим уровнем познаний в этой области понять принцип работы достаночно тяжело, а с примером "на руках" я разберусь гораздо быстрее...
|
|
#4
|
|||
|
|||
|
Вот вам пример на скорую руку. Приложение при минимизации "прячется" в трей и реагирует на мышку: двойной клик левой кнопкой - восстановление, одинарный правой - отображение контекстного меню.
Чтобы не переусложнять текст, я не стал тут приводить действия для смены иконки, если нужно - спрашивайте, я объясню отдельно. Ничего сложного тут нет, на самом деле. |
|
#5
|
|||
|
|||
|
Спасибо, и мне очень пригодилось
|