Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Работа с систем треем


Автор: castle 7.2.2006, 18:54
В общем хочу слепить небольшое меню в трее для моей проги...
Иконку в трей поместил, а вот какие сообщения от системы нужно принимать, и где это самое меню рисовать - не знаю...

мож у кого есть примерчик робочего меню в трее, буду очень признателен

Автор: Snowy 7.2.2006, 19:14
А вот как поместил, так и принимай.
Ты же давал хэндл окна и сообщение, когда помещал.
Вот этим окном и лови это сообщение.

Автор: castle 7.2.2006, 19:22
я наверно не прально объяснол...
какие сообщения посылает винда при нажатии на иконку в трее...

Автор: Snowy 7.2.2006, 20:34
Все правильно ты объяснил.
К примеру. Добавляем икону в трей:
Код

var
  NID: TNotifyIconData;
begin
  FillChar(NID, SizeOf(TNotifyIconData), 0);
  with NID do begin
    cbSize := SizeOf(TNotifyIconData);
    Wnd   := hWindow; // HWND нашего окна
    uID    := 1; // Наш ID
    uFlags := 7;
    uCallbackMessage := WM_MYICON_MESSAGE; // Наше сообщение
    hIcon  := Icon; // hIcon
    lstrcpyn(szTip, Tip, SizeOf(szTip));
  end;
  Result := Shell_NotifyIcon(0, @NID);

Соответсвенно мы при помещении иконы ей сказали:
Посылай сообщение WM_MYICON_MESSAGE окну Wnd и в его wParam клади 1.
Соотвественно у окна Wnd лови сообщение WM_MYICON_MESSAGE.
Ты сам определяешь всё это уже на уровне добавления иконы в трей.

Автор: SoWa 7.2.2006, 20:39
А можно без проблемм воспользоваться JEDI и присвоить контекстное меню компоненту, который делает иконку в трее.

Автор: Snowy 7.2.2006, 21:10
Цитата(SoWa @ 7.2.2006, 20:39 Найти цитируемый пост)
А можно без проблемм воспользоваться JEDI и присвоить контекстное меню компоненту, который делает иконку в трее.

Можно. Таких компонентов сотни.
Только не в этом разделе. Здесь мы обсуждаем WinAPI.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)