информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft обещает радикально усилить... 
 Ядро Linux избавляется от российских... 
 20 лет Ubuntu 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[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
<"чистая" ссылка>
до сих пор под XP сижу, и слазить не планирую, 13.10.18 05:51  
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка>
Аналогично.

А Спай надо от 6й Студии юзать. Кстати, пробовал 8ю, плюеул, и с VC-6 слазить более не собираюсь.

http://img0.joyreactor.cc/pics/post/geek-windows-windows-95-vista-2275850.jpeg
Пора потехоньку перебираться на Линух. 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
<"чистая" ссылка>
> Плохо. это - как?
Ну так я же написал чуть выше об этом - в посте, который начинается словами "Была идея..."
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach