Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Координаты от child controls  (Прочитано 9986 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MasterMan342
Участник

ru
Offline Offline
Пол: Мужской

« : 03-06-2012 14:37 » 

Доброе время суток.
Суть проблемы такова:
Пытаюсь создать свой контрол, он содержит внутри панель, и еще несколько элементов...
Мне необходимы координаты мыши относительно формы, в чем в принципе помогает событие mousemove.
Но при попадании курсора на дочерние элементы, прием координат прекращается т.к. управление дочерним элементам передается.
как мне уведомить родителя (т.е. сам контрол) о таком-же MouseMove событии дочерней панели?
(или вообще глобальные координаты, не обращая внимания на дочерние элементы)?
« Последнее редактирование: 04-06-2012 04:41 от Алексей1153++ » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 03-06-2012 14:44 » 

Ставить хук на события мыши.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
MasterMan342
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 03-06-2012 14:52 » 

Ставить хук на события мыши.

Эм... не знаю что вы имели в виду Улыбаюсь но я вроде нашел решение: В конструкторе контрола прописал цикл подписывающий все дочерние элементы котрола на обработчик события MouseMove контрола... вроде пашет, но на сколько это правильно? Жаль

Добавлено через 1 минуту и 45 секунд:
и еще вопрос в догонку) можно ли как-то получить список подписчиков на событие родительского элемента? блин, глупый наверно вопрос
« Последнее редактирование: 03-06-2012 14:54 от MasterMan342 » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 03-06-2012 16:59 » 

Вот чувствую я, этот огород городится попросту от того, что не продумана нормальная архитектура. Раз элементы по умолчанию ведут себя определённым естественным образом, нужно 10 раз подумать, прежде чем пытаться заставлять их вести себя противоестественным образом.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 04-06-2012 04:42 » 

как мне уведомить родителя (т.е. сам контрол) о таком-же MouseMove событии дочерней панели?
(или вообще глобальные координаты, не обращая внимания на дочерние элементы)?
перекинуть сообщения из контролов на родителя
Записан

MasterMan342
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 04-06-2012 06:16 » 

как мне уведомить родителя (т.е. сам контрол) о таком-же MouseMove событии дочерней панели?
(или вообще глобальные координаты, не обращая внимания на дочерние элементы)?
перекинуть сообщения из контролов на родителя

спасибо) вы прямо капитан-очевидность! для вас это может быть просто, но я не понимаю как это реализовать Жаль и что вы вообще имели в виду... если winapi , то я с ним не знаком вообще... могли бы хоть небольшой примерчик дать? из 2/3 строчек кода...
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 04-06-2012 06:44 » 

MasterMan342, противоречие: КО и "я не понимаю". Не понимаешь - спрашивай, и эмоции тут не помощник. Прежде всего прочитай _свои_ посты и попытайся из них понять, о чем идет речь и какой вопрос задан.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 08-06-2012 05:04 » 

как мне уведомить родителя (т.е. сам контрол) о таком-же MouseMove событии дочерней панели?
(или вообще глобальные координаты, не обращая внимания на дочерние элементы)?
перекинуть сообщения из контролов на родителя

спасибо) вы прямо капитан-очевидность! для вас это может быть просто, но я не понимаю как это реализовать Жаль и что вы вообще имели в виду... если winapi , то я с ним не знаком вообще... могли бы хоть небольшой примерчик дать? из 2/3 строчек кода...

для меня это тоже непросто. Это же надо сесть, написать, а я ленивый ) Могу задать направление

1) обрабатываешь сообщение нажатия в контроле (WM_LBUTTONDOWN , WM_LBUTTONUP) http://msdn.microsoft.com/en-us/library/windows/desktop/ms645607(v=vs.85).aspx
2) преобразуешь координату из клиентской области чайла в клиентскую область родителя

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633510(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/aa932750.aspx

3) затем при помощи SendMessage перенаправляешь сообщение родителю (уже с его координатами)
Записан

Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 08-06-2012 07:55 » 

Алексей1153++, судя по остальным темам, у топикстартера дотнет, там, скорее всего, достаточно готовый эвент для нотификаций использовать. Гугл это скорее подтверждает (код смотрел по диагонали, за качество решений не скажу): http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/9ec81c19-7465-47a6-9c85-a87c1fa5e949
« Последнее редактирование: 08-06-2012 07:57 от Вад » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #9 : 08-06-2012 18:22 » new

Вад, ну он упомянул WinAPI , вот у меня рефлекс и сработал ))
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines