Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как скрыть popup меню над иконкой в системном трее 
:(
    Опции темы
hawkins
Дата 3.12.2006, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 8.9.2003

Репутация: нет
Всего: нет



Всем привет! 
У программы в трее есть иконка, по клику правой кнопкой мыши на иконке показывается popupmenu. Если окно программы развернуто и вызывается это меню из трея, то после клика мышью по чужому окну или при нажатии искейпа,  это меню сразу исезает. Но если то же самое сделать когда  окно программы минимизированно, то popupmenu исчезает
только через 10-15 сек.
Так вот вопрос, как заставить это меню исчезать сразу после активизации чужого окна ?
PM MAIL   Вверх
Sunvas
Дата 3.12.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: нет
Всего: 89



PostMessage(popupmenu.Handle,WM_CLOSE,0,0);


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
hawkins
Дата 3.12.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 8.9.2003

Репутация: нет
Всего: нет



WM_CLOSE не помогло, но
нашел другое решение, перед вызовом Popupmenu1.Popup
 посылаю сообщение WM_ACTIVATE, код где-то такой получается :

Код

procedure TForm1.IconMouse(var Msg: TMessage);
// обработчик событий для иконки в трее
 var p: TPoint;
 i:integer;
begin
 GetCursorPos(p); // Запоминаем координаты курсора мыши
 case Msg.LParam of // Проверяем какая кнопка была нажата

  WM_RBUTTONUP: //Действия, выполняемый по одинарному  щелчку правой кнопки мыши
    begin
     Application.BringToFront;
     if not Form1.Active then
     SendMessage(Form1.Handle, WM_ACTIVATE,WA_ACTIVE,0);
     Popupmenu1.Popup(p.X, p.Y); // меню в трее        
    end;
 end;

end;



Вообще сначала пробовал посылать сообщение через PostMessage, но тогда если сразу
после минимизации окна вызвать меню, то меню появляется и сразу исчезает (видимо
сообщение доходит до окна уже после появления меню), а при дальнейших вызовах уже не пропадает срузу.
PM MAIL   Вверх
Snowy
Дата 4.12.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0641 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.