Консультация № 142895
02.09.2008, 12:45
0.00 руб.
0 1 1
Здравствуйте все!
Покажите плиз как грамотно сделать чтобы при потери фокуса Popup меню на иконке в трее исчезало. Т.е. если клик будет за областью меню, то меню убрать.

Обсуждение

Неизвестный
03.09.2008, 11:27
общий
это ответ
Здравствуйте, Maximus777!

За это отвечате система - это свойство Popup меню. Т.е. Popup меню так и работает - "если клик будет за областью меню, то меню убрать". У меня с этим проблем не было (WinXP/Win2K/WinNT4). Вызывал его появление по перехвату нотификационного сообщения от иконки как-то так

Код:

SetForegroundWindow(Handle);
GetCursorPos(p);
Popup.Popup(p.x,p.y);


Если же у вас не-Popup меню, то есть "самодельное", то попробуйте с функциями SetCaptureMouse/ReleaseCapture и будете получать все сообщения от мыши даже за пределами вашего окна.

Еще есть вариант с ловушками (но это уже "тяжелая артиллерия" :)) SetWindowsHookEx с WH_MOUSE_LL - а дальше анализируйте, где мышь и что делает.
Форма ответа