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

Вниз

PopUp Menu + Tray   Найти похожие ветки 

 
Dib@zol ©   (2007-12-03 21:11) [0]

Делаю прогу, размещающую иконку в трее. По нажатии на неё главному окну приходит сообщение, и в его обработчике запускается TrackPopupMenu. Проблема в том, что я с его помощью не могу отследить нажатие кнопки мыши за пределами этого меню, чтобы убрать его с экрана. SetCapture не помогает, ибо окно меню не принадлежит вызывающему потоку (сиречь потоку моей проги), проставить свою оконную процедуру я тоже (из-за несовпадения адресных пространств) не могу. Пока что реализовал перехват мышки через глобальный хук. Вопрос: как реализовать отлов нажатия за пределами попуп-меню более просто и менее глюко- и тормозоопасно?


 
antonn ©   (2007-12-04 00:00) [1]

я может щас глупость сказу, а менюхе не приходит WM_KILLFOCUS?


 
Юрий Зотов ©   (2007-12-04 01:03) [2]

> реализовать отлов нажатия за пределами попуп-меню

Никак не нужно, система самом все отловит и все закроет. Нужно только грамотно меню вызвать. Перед TrackPopupMenu надо через SetForegroundWindow вывести на передний план окно, для которого вызывается popup-меню (даже если это окно невидимое), а после TrackPopupMenu послать этому окну WM_NULL через PostMessage.


 
Dib@zol ©   (2007-12-04 08:32) [3]

> [1] antonn ©   (04.12.07 00:00)
> я может щас глупость сказу, а менюхе не приходит WM_KILLFOCUS?

В том то и дело, что приходит, только как его поймать? Окно меню принадлежит, еснеошибаюсь, потоку Кернел32 (Вин9х) и если система пойдёт по адресу, переданному в качестве оконной процедуры в SetWindowLong, то возникнет рантайм 219, более известный как AV. Ведь даже если у моей проги по адресу скажем $0038:7689 расположен первый байт новой оконной процедуры, то у системы там может быть что угодно, но не это
> (из-за несовпадения адресных пространств)


> [2] Юрий Зотов ©   (04.12.07 01:03)

Респект!!! Заработало, урряяя :)



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

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

Наверх




Память: 0.47 MB
Время: 0.018 c
2-1215717991
flaxe
2008-07-10 23:26
2008.08.17
Картинки в DBF


1-1196705497
Dib@zol
2007-12-03 21:11
2008.08.17
PopUp Menu + Tray


2-1215790986
DillerXX
2008-07-11 19:43
2008.08.17
Помогите с SQL запросом если не лень


1-1196520892
NikolayV
2007-12-01 17:54
2008.08.17
Вопрос по ThemeServices


2-1216011985
dreamse
2008-07-14 09:06
2008.08.17
Подскажите какое свой ство в компоненте TTable или TQuery