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

Тема в разделе "Delphi - Система", создана пользователем misterio, 24 июн 2008.

  1. misterio

    misterio Гость

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

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

    Код (Text):
    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;
    Сообственно не срабатывает вот это вообще :

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

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

    etc Гость

    Докажите.
     
  3. misterio

    misterio Гость

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


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

    etc Гость

    "Бездоказательно, дорогой профессор, бездоказательно!" (с), просто так, по F7, вы туда не попадете .
     
  5. misterio

    misterio Гость

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

    А внутрь не заходит...И проблема в этом. Прошу помочь, если кто-то что- знает по теме.... :(
     
  6. etc

    etc Гость

    Установите брэкпоинт на строке Ic(2,Application.Icon);. и/или логируйте все что туда приходит, т.е. скидывайте в файл все Msg.LParam и Msg.RParam, потом изучайте.
    Но что то есть опасения, что вы чего-то не договариваете, т.к. код предтавленный по ссылке у меня работает, правда D7, но врядли это с этим связано.


    Что такое "mouse1, mouse2"?
     
  7. misterio

    misterio Гость

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


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


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

    etc Гость

    Очевидно Delphi 7 :(
    Я тоже скопировал, и работает. Да и яж говорю, что-то странно, что WM_RBUTTONUP работает, а WM_LBUTTONUP нет, мистика какая-то О_о
     
Загрузка...

Поделиться этой страницей