Текущий архив: 2006.04.02;
Скачать: CL | DM;
ВнизКак закрыть всплывающее меню в SystemTray когда оно теряет фокус? Найти похожие ветки
← →
Volf_555 (2006-01-15 16:29) [0]В справке по этому поводу пишется:
Иногда, при потере фокуса, всплывающее меню в System Tray при потере фокуса не закрывается. Поэтому, при обработке сообщений для всплывающего меню необходимо поместить окно на передний план и послать ему сообщение WM_NULL.procedure TForm1.WndProc(var Msg : TMessage);
var
p : TPoint;
begin
case Msg.Msg of
WM_USER + 1:
case Msg.lParam of
WM_RBUTTONDOWN: begin
SetForegroundWindow(Handle);
GetCursorPos(p);
PopupMenu1.Popup(p.x, p.y);
PostMessage(Handle, WM_NULL, 0, 0);
end;
end;
end;
inherited;
end;
Когда я добавляю эту процедуру в свой проэкт и в разделprivate
добавляюprocedure WndProc(var Msg : TMessage);
, то эта процедура не срабатывает, то есть - когда я нажимаю правой кнопкой в трэи - всплывает попап-меню. Если я нажимаю мышью за границей этого меню, то меню не закрывается....
Как сделать чтобы меню закрывалось при щелчке мышью за пределами меню?
← →
VirEx © (2006-01-15 16:42) [1]следить активно ли окно или нет, у меня в WinConsul сделано так:
WM_ACTIVATE:
//если окно стало неактивным и оно раскрыто до конца то анимация "сворачивания"
if (Msg.lParam shl 16)=WA_INACTIVE then
← →
Rouse_ © (2006-01-15 17:34) [2]Просто перед показом меню делай SetForegroundWindow(Handle);
← →
Volf_555 (2006-01-15 17:37) [3]
> Rouse_ © (15.01.06 17:34) [2]
Огромное спасибо! То что нужно!
Страницы: 1 вся ветка
Текущий архив: 2006.04.02;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.039 c