| 
 
 
 
 Легенда:
  новое сообщение 
  закрытая нитка 
  новое сообщение 
  в закрытой нитке 
  старое сообщение   | 
Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
Новичкам также крайне полезно ознакомиться с данным документом.
|  |  | Была идея воспользоваться Access’овской альтернативой...  02.09.18 06:09  Число просмотров: 4836 Автор: Vedrus <Serokhvostov Anton> Статус: Member
 |  
| Была идея воспользоваться Access’овской альтернативой WM_KILLFOCUS («потеря фокуса»), но почему-то «формы» не реагируют на событие «потеря фокуса». На них реагируют только диалоговые элементы, размещённые на форме. Когда, например на форме размещаешь два editbox’а и следишь за срабатыванием событий получения и потери фокуса – они все срабатывают. 
 Плюс, если на форме есть хотя бы один диалоговый элемент, который может получить фокус (те же editbox’ы), то событие «получение фокуса» самой формы – тоже не срабатывает. Я так понимаю, это прикол Access’а такой (он похоже отфильтровывает часть сообщений WM_XXX). Может у кого-то есть идеи, как несмотря на это – всё же отследить, что фокус с окна ушёл?
 |  | <programming> |  
| [Win32] Каким образом ListBox’ы узнают, что мышь кликнула за их пределами?  01.09.18 18:29 Автор: Vedrus <Serokhvostov Anton> Статус: Member
 Отредактировано 01.09.18 18:31  Количество правок: 2
 |  
| Делаю альтернативу стандартному ListBox’у – в MS Access. Чтобы у каждого пункта ListBox’а могло быть несколько строк, и чтобы длина каждого пункта могла быть больше 256 символов. Сделал всплывающее модальное окно без границ, - выглядит как надо. Единственная проблема: не знаю как сделать, чтобы при мышином клике за пределами окна, оно закрывалось. 
 Коллеги, может быть знаете, каким образом это в стандартных ListBox’ах реализовано?
 
 Мой ListBox
 |  
|  | Wm_killfocus  02.09.18 04:05 Автор: Zef <Alloo Zef> Статус: Elderman
 |  
|  |  
|  |  | Была идея воспользоваться Access’овской альтернативой...  02.09.18 06:09 Автор: Vedrus <Serokhvostov Anton> Статус: Member
 |  
| Была идея воспользоваться Access’овской альтернативой WM_KILLFOCUS («потеря фокуса»), но почему-то «формы» не реагируют на событие «потеря фокуса». На них реагируют только диалоговые элементы, размещённые на форме. Когда, например на форме размещаешь два editbox’а и следишь за срабатыванием событий получения и потери фокуса – они все срабатывают. 
 Плюс, если на форме есть хотя бы один диалоговый элемент, который может получить фокус (те же editbox’ы), то событие «получение фокуса» самой формы – тоже не срабатывает. Я так понимаю, это прикол Access’а такой (он похоже отфильтровывает часть сообщений WM_XXX). Может у кого-то есть идеи, как несмотря на это – всё же отследить, что фокус с окна ушёл?
 |  
|  |  |  | для окон можно попробовать wm_activate  02.09.18 18:21 Автор: dl <Dmitry Leonov>
 |  
|  |  
|  |  |  |  | Ну так это событие срабатывает, когда форма активируется, а...  03.09.18 04:44 Автор: Vedrus <Serokhvostov Anton> Статус: Member
 |  
| Ну так это событие срабатывает, когда форма активируется, а мне – обратное надо. Я про диалоговые элементы и формы в предыдущем посте упомянул только для демонстрации того факта, что в MS Access событие WM_KILLFOCUS плохо работает. |  
|  |  |  |  |  | оно срабатывает в обе стороны  03.09.18 18:28 Автор: dl <Dmitry Leonov>
 |  
| В wParam приходит либо признак активации, либо деактивации. |  
|  |  |  |  |  |  | Возникла идея – фиксировать в лог все сообщения оконные,...  17.09.18 07:01 Автор: Vedrus <Serokhvostov Anton> Статус: Member
 |  
| Возникла идея – фиксировать в лог все сообщения оконные, которые окну приходят. Сделал это, подключившись к Access’овскому окну через сабклассинг, но сообщения с номером 0x06 (WM_ACTIVATE) так и не дождался. WM_KILLFOCUS – тоже неудовлетворительно работает. Если с текущего окна кликаешься на другое, то сообщение это приходит, а если на панель задача кликаешь, то не приходит. О том, исключительно Access’ная это особенность, или вообще обще-Windows-ная – не разбирался (из других сред сабклассингом анализ не проводил), потому как всё равно не буду в обозримом будущем с Access’а на другую платформу переходить. 
 Теперь другая идея возникла… И вопрос по ней. Как моё модальное окно узнаёт, что клик случился за его пределами? А оно узнаёт об этом точно, потому как начинает недовольство проявлять (пиликает и мигает, мол тыкай на меня, а не мимо)? Вот если бы отловить приход этого уведомления, и прикрутить на него процедуру закрытия, – моя проблема решилась бы.
 
 
 PS. Сабклассинг в MS Access работает криво (если IDE-активна, при сабкласинге чехарда начинается – видимо IDE его тоже активно использует).
 |  
|  |  |  |  |  |  |  | Spy++ погонять попробуй  03.10.18 10:59 Автор: HandleX <Александр М.> Статус: The Elderman
 |  
|  |  
|  |  |  |  |  |  |  |  | Много лет назад, помню, гонял его под WinXP, а сейчас скачиваю, и он под WinXP не работает к сожалению (до сих пор под XP сижу, и слазить не планирую).  11.10.18 06:01 Автор: Vedrus <Serokhvostov Anton> Статус: Member
 |  
|  |  
|  |  |  |  |  |  |  |  |  |  | Пора потехоньку перебираться на Линух.  14.10.18 18:34 Автор: Den <Денис Т.> Статус: The Elderman
 |  
|  |  
|  |  |  |  |  | в ms access событие wm_killfocus плохо работает  03.09.18 04:49 Автор: Zef <Alloo Zef> Статус: Elderman
 Отредактировано 03.09.18 05:09  Количество правок: 1
 |  
| Плохо. это - как? 
 Интересно. я на С писал нечто подобное - у меня подсвечивались статики, на которыые я наезжал курсором. Проблем не было.
 
 Вообще, у меня такое впечатление, что это - какой-то глюк библиотек Вижуалстудии после "шестерки". Я часто замечаю зависание на экране "бесхозных"  контекстных меню. Старые программы этим не грешат.
 |  
|  |  |  |  |  |  | Ну так я же написал чуть выше об этом - в посте, который...  03.09.18 05:53 Автор: Vedrus <Serokhvostov Anton> Статус: Member
 |  
| > Плохо. это - как? Ну так я же написал чуть выше об этом - в посте, который начинается словами "Была идея..."
 |  
 
 
 |  |