|
#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
|
|||
|
|||
Спасибо, и мне очень пригодилось
|