информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медСтрашный баг в WindowsГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Модель надежности отказоустойчивой... 
 Ноябрьский перевыпуск октябрьского... 
 Закопать Flash 
 Октябрьские патчи от MS и перевыпуск... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Wm_killfocus 02.09 04:05  Число просмотров: 332
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка> <ответить>
<ответить> <programming>
[Win32] Каким образом ListBox’ы узнают, что мышь кликнула за их пределами? 01.09 18:29  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 01.09 18:31  Количество правок: 2
<"чистая" ссылка> <ответить>
Делаю альтернативу стандартному ListBox’у – в MS Access. Чтобы у каждого пункта ListBox’а могло быть несколько строк, и чтобы длина каждого пункта могла быть больше 256 символов. Сделал всплывающее модальное окно без границ, - выглядит как надо. Единственная проблема: не знаю как сделать, чтобы при мышином клике за пределами окна, оно закрывалось.

Коллеги, может быть знаете, каким образом это в стандартных ListBox’ах реализовано?

Мой ListBox
Wm_killfocus 02.09 04:05  
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка> <ответить>
Была идея воспользоваться Access’овской альтернативой... 02.09 06:09  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <ответить>
Была идея воспользоваться Access’овской альтернативой WM_KILLFOCUS («потеря фокуса»), но почему-то «формы» не реагируют на событие «потеря фокуса». На них реагируют только диалоговые элементы, размещённые на форме. Когда, например на форме размещаешь два editbox’а и следишь за срабатыванием событий получения и потери фокуса – они все срабатывают.

Плюс, если на форме есть хотя бы один диалоговый элемент, который может получить фокус (те же editbox’ы), то событие «получение фокуса» самой формы – тоже не срабатывает. Я так понимаю, это прикол Access’а такой (он похоже отфильтровывает часть сообщений WM_XXX). Может у кого-то есть идеи, как несмотря на это – всё же отследить, что фокус с окна ушёл?
для окон можно попробовать wm_activate 02.09 18:21  
Автор: dl <Dmitry Leonov>
<"чистая" ссылка> <ответить>
Ну так это событие срабатывает, когда форма активируется, а... 03.09 04:44  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <ответить>
Ну так это событие срабатывает, когда форма активируется, а мне – обратное надо. Я про диалоговые элементы и формы в предыдущем посте упомянул только для демонстрации того факта, что в MS Access событие WM_KILLFOCUS плохо работает.
оно срабатывает в обе стороны 03.09 18:28  
Автор: dl <Dmitry Leonov>
<"чистая" ссылка> <ответить>
В wParam приходит либо признак активации, либо деактивации.
Возникла идея – фиксировать в лог все сообщения оконные,... 17.09 07:01  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <ответить>
Возникла идея – фиксировать в лог все сообщения оконные, которые окну приходят. Сделал это, подключившись к Access’овскому окну через сабклассинг, но сообщения с номером 0x06 (WM_ACTIVATE) так и не дождался. WM_KILLFOCUS – тоже неудовлетворительно работает. Если с текущего окна кликаешься на другое, то сообщение это приходит, а если на панель задача кликаешь, то не приходит. О том, исключительно Access’ная это особенность, или вообще обще-Windows-ная – не разбирался (из других сред сабклассингом анализ не проводил), потому как всё равно не буду в обозримом будущем с Access’а на другую платформу переходить.

Теперь другая идея возникла… И вопрос по ней. Как моё модальное окно узнаёт, что клик случился за его пределами? А оно узнаёт об этом точно, потому как начинает недовольство проявлять (пиликает и мигает, мол тыкай на меня, а не мимо)? Вот если бы отловить приход этого уведомления, и прикрутить на него процедуру закрытия, – моя проблема решилась бы.


PS. Сабклассинг в MS Access работает криво (если IDE-активна, при сабкласинге чехарда начинается – видимо IDE его тоже активно использует).
Spy++ погонять попробуй 03.10 10:59  
Автор: HandleX <Александр Майборода> Статус: The Elderman
<"чистая" ссылка> <ответить>
Много лет назад, помню, гонял его под WinXP, а сейчас скачиваю, и он под WinXP не работает к сожалению (до сих пор под XP сижу, и слазить не планирую). 11.10 06:01  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <ответить>
до сих пор под XP сижу, и слазить не планирую, 13.10 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:34  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка> <ответить>
в ms access событие wm_killfocus плохо работает 03.09 04:49  
Автор: Zef <Alloo Zef> Статус: Elderman
Отредактировано 03.09 05:09  Количество правок: 1
<"чистая" ссылка> <ответить>
Плохо. это - как?

Интересно. я на С писал нечто подобное - у меня подсвечивались статики, на которыые я наезжал курсором. Проблем не было.

Вообще, у меня такое впечатление, что это - какой-то глюк библиотек Вижуалстудии после "шестерки". Я часто замечаю зависание на экране "бесхозных" контекстных меню. Старые программы этим не грешат.
Ну так я же написал чуть выше об этом - в посте, который... 03.09 05:53  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <ответить>
> Плохо. это - как?
Ну так я же написал чуть выше об этом - в посте, который начинается словами "Была идея..."
1






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


  Copyright © 2001-2018 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach