Проблема со сворачиванием в Tray

  • Автор темы misterio
  • Дата начала
M

misterio

#1
Сообственно весь способ описан тут : http://forum.sources.ru/index.php?showtopic=8557 или в базе данных.

Но у меня возникла проблема. Програма сама сворачиваеться в трэй, но разворачиваться не хочет никак.
Вот кусочек, который отвечает за разворот :

Код:
procedure TForm1.IconMouse(var Msg:TMessage);
Var p:tpoint;
begin
GetCursorPos(p); // Запоминаем координаты курсора мыши
Case Msg.LParam OF // Проверяем какая кнопка была нажата
WM_LBUTTONUP,WM_LBUTTONDBLCLK: {Действия, выполняемый по одинарному или двойному щелчку левой кнопки мыши на значке. В нашем случае это просто активация приложения} 
Begin 
Ic(2,Application.Icon); // Удаляем значок из трея
ShowWindow(Application.Handle,SW_SHOW); // Восстанавливаем кнопку программы
ShowWindow(Handle,SW_SHOW); // Восстанавливаем окно программы
End;
WM_RBUTTONUP: {Действия, выполняемый по одинарному щелчку правой кнопки мыши}
Begin
SetForegroundWindow(Handle); // Восстанавливаем программу в качестве переднего окна
PopupMenu1.Popup(p.X,p.Y); // Заставляем всплыть тот самый TPopUp о котором я говорил чуть раньше
PostMessage(Handle,WM_NULL,0,0);
end;
End;
end;
Сообственно не срабатывает вот это вообще :

Код:
WM_LBUTTONUP,WM_LBUTTONDBLCLK: {Действия, выполняемый по одинарному или двойному щелчку левой кнопки мыши на значке. В нашем случае это просто активация приложения} 
Begin 
Ic(2,Application.Icon); // Удаляем значок из трея
ShowWindow(Application.Handle,SW_SHOW); // Восстанавливаем кнопку программы
ShowWindow(Handle,SW_SHOW); // Восстанавливаем окно программы
End;
А если нажата вторая кнопка на мише, то срабатывает только PopupMenu1...

Код:
 PopupMenu1.Popup(p.X,p.Y);
Остальное все вроде игнорируеться. Компилировалось на GodeGear RAD Studio.
 
M

misterio

#3
Нажимаю F7 и смотрим что делает программа. Это рядки просто пропускаються(такое впечатление), поскольку никаких действий нету! Ни на mouse1 ни на mouse2. А не срабатывает скорее всего потому что в Msg не передаеться парамерт....почему?


P.S. Не можете ничего подсказать - лучше не пишите!
 
M

misterio

#5
"Бездоказательно, дорогой профессор, бездоказательно!" (с), просто так, по F7, вы туда не попадете .
Не вижу никаго резона разводить тут флуд и умничать. Я говорю о том, что почему-то не работает оработчики события на нажатия mouse1, mouse2. Не знаю что там с F7, но программа циклически скачет :

GetCursorPos(p);
Case Msg.LParam OF
...
End;
А внутрь не заходит...И проблема в этом. Прошу помочь, если кто-то что- знает по теме.... :(
 
E
#6
А внутрь не заходит...И проблема в этом.
Установите брэкпоинт на строке Ic(2,Application.Icon);. и/или логируйте все что туда приходит, т.е. скидывайте в файл все Msg.LParam и Msg.RParam, потом изучайте.
Но что то есть опасения, что вы чего-то не договариваете, т.к. код предтавленный по ссылке у меня работает, правда D7, но врядли это с этим связано.


Я говорю о том, что почему-то не работает оработчики события на нажатия mouse1, mouse2.
Что такое "mouse1, mouse2"?
 
M

misterio

#7
Что такое "mouse1, mouse2"?
Ну нажатия на кнопки мыши!
Но что то есть опасения, что вы чего-то не договариваете, т.к. код предтавленный по ссылке у меня работает, правда D7, но врядли это с этим связано.
Да...какой мне резон что-то недоговарить, если не получаеться. Я ж просто взял и скопировал код на form, ничего своего еще не успел добавить. Ладно буду пробовать! :(


Добавлено через 10 мин.


Странно...все переделал с нуля - работает....оч. интересно!
 
E
#8