Форум: "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.06 c