Главная страница
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.012 c
15-1214884536
ASR
2008-07-01 07:55
2008.08.17
Хочу сделать на сайте


15-1214563536
oldman
2008-06-27 14:45
2008.08.17
Архиватор PAR


2-1216027505
elserpiente
2008-07-14 13:25
2008.08.17
TTreeView изменение стиля текста элемента


2-1216068588
DJ_UZer
2008-07-15 00:49
2008.08.17
как програмно нажать на клавиши


2-1215703846
buzb
2008-07-10 19:30
2008.08.17
Как узнать текущую папку проэкта?