Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.01;
Скачать: CL | DM;

Вниз

Проблемы клика по моей иконке в трэе   Найти похожие ветки 

 
Denizzz   (2004-06-17 12:18) [0]

Привет всем.
Моя программа сворачивается в трэй.
Но при кликании по ней не только появляется окно моего приложения, но и эмулируется нажатие иконки находившейся в тот момент рядом с моей.
Как решить такую проблему?


 
Denizzz   (2004-06-17 13:33) [1]

Код выглядит у меня так:
procedure TFMain.WMIconNotify(var Message:TMessage);
var PT: TPoint;
begin
  if (Message.LParam=WM_LBUTTONDOWN) then
  begin
  if Dis=False then FMain.OnCreate(FMain);
  FMain.Show;
  Timer1.Enabled:=False;
  FNID.uFlags:=0;
  Shell_NotifyIcon(NIM_DELETE,@FNID);
  FHI.Free;
  end;
  if (Message.LParam=WM_RBUTTONDOWN) then
  begin
  if Ding="1" then N3.Checked:=True else N3.Checked:=False;
  if Shows="1" then N4.Checked:=False else N4.Checked:=True;
  if Clr="1" then N7.Checked:=True else N7.Checked:=False;
  SetForegroundWindow(Handle);
  GetCursorPos(PT);
  PopupMenu1.Popup(PT.X,PT.Y);
  PostMessage(Handle, WM_NULL, 0, 0);
  end;
end;


 
MIA   (2004-06-17 15:46) [2]

Может поможет :)

procedure Add_ico(index: Integer);
begin
 FWindowHandle := Classes.AllocateHWnd(Form1.WindowProc);
 Icon1 := TIcon.Create;
 Unit1.Form1.ImageList1.GetIcon(index, Icon1);
 NotifyIconData.cbSize := sizeof(NotifyIconData);
 NotifyIconData.Wnd := FWindowHandle;
 NotifyIconData.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
 NotifyIconData.uCallbackMessage := WM_USER + 101;
 NotifyIconData.hIcon := Icon1.Handle;
 StrPLCopy(NotifyIconData.szTip, "Чат КНП+MIA", sizeof(NotifyIconData.szTip));
 Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
end;

procedure TForm1.WindowProc(var Message: TMessage);
begin
 begin
   with TMessage(Message) do
     if Msg = WM_USER + 101 then
       with TWMMouse(Message) do
         begin
           GetCursorPos(FInternal);
           case LParam of
             WM_LBUTTONDOWN:
               begin
                 Caption := "WM_LBUTTONDOWN";
               end;
             WM_LBUTTONUP:
               begin
                 Caption := "WM_LBUTTONUP";
               end;
             WM_LBUTTONDBLCLK:
               begin
                 Caption := "WM_LBUTTONDBLCLK";
               end;
             WM_MBUTTONDOWN:
               begin
                 Caption := "WM_MBUTTONDOWN";
               end;
             WM_MBUTTONUP:
               begin
                 Caption := "WM_MBUTTONUP";
               end;
             WM_MBUTTONDBLCLK:
               begin
                 Caption := "WM_MBUTTONDBLCLK";
               end;
             WM_MOUSEMOVE:
               begin
                 Caption := "WM_MOUSEMOVE";
               end;
             WM_RBUTTONDOWN:
               begin

                 Caption := "WM_RBUTTONDOWN";
               end;
             WM_RBUTTONUP:
               begin
                 PopupMenu1.Popup(FInternal.X, FInternal.Y);
                 Application.ProcessMessages;
                 Caption := "WM_RBUTTONUP";
               end;
             WM_RBUTTONDBLCLK:
               begin
                 Caption := "WM_RBUTTONDBLCLK";
               end;
           end;
         end
     else
       Result := DefWindowProc(FWindowHandle, Msg, wParam, lParam);

 end;
end;

Вот... :)


 
Mim1 ©   (2004-06-17 17:50) [3]

Дело в том что в рядомстоящей иконке происходит действие на событие wm_mouseup. А при нажатии по вашей эконке вы ее удаляете сразу. Выходов два, либо делайте postmessage своемуу приложению и удаляете свою эконку в обработчике этого события (может и не сработать), либо перевесте событие с down на up (либо удаляйте иконку в up событии).


 
Mim1 ©   (2004-06-17 17:51) [4]


> procedure TFMain.WMIconNotify(var Message:TMessage);
> var PT: TPoint;
> begin
>   if (Message.LParam=WM_LBUTTONUP) then
>   begin


 
grom   (2004-06-17 18:31) [5]

http://www.delphiworld.ru/index.php?stat&page=2
---------------------
Секреты иконки в системной трее. Часть 1
Автор: Рустик, Просмотров: 234
Этой статьей я начну свой расскаж о секретах работы с иконкой приложения в системной трее. Эта часть расскажет вам о самом самом начальном: как добавлять/изменять/удалять иконку в трей. А также менять ее параметры во время работы приложения.
---------------------------
Секреты иконки в системной трее. Часть 2
Автор: Рустик, Просмотров: 242
Логическое продолжение предыдущей статьи.


 
Denizzz   (2004-06-18 07:43) [6]

Mim1 Большое thanks!



Страницы: 1 вся ветка

Текущий архив: 2004.08.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.054 c
8-1084713961
iudjen
2004-05-16 17:26
2004.08.01
видеозапись экрана


14-1089374389
Ketmar
2004-07-09 15:59
2004.08.01
задача, об которую сломали челюсти четыре человека %-)


3-1089106134
serg!
2004-07-06 13:28
2004.08.01
Apollo SQL 5.0-5.2


10-1025241119
Nikols
2002-06-28 09:11
2004.08.01
Работает только на разных машинах...


6-1085994971
half_litre
2004-05-31 13:16
2004.08.01
Алгоритм обмена данными ?