Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.038 c
1-1089890578
_Dragon
2004-07-15 15:22
2004.08.01
Проблема с Listbox в runtime


1-1089757292
sashapont
2004-07-14 02:21
2004.08.01
Ввод в Edit в формате 10:33:41


1-1090240503
Комбинатор
2004-07-19 16:35
2004.08.01
Можно ли заблокировать ShowMessage.


1-1090408113
Draught
2004-07-21 15:08
2004.08.01
как проверить является ли введеный текст числом?


1-1090138449
Лёха
2004-07-18 12:14
2004.08.01
RAS API





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский