Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

CM_MOUSEENTER [D7, XP]


Litt ©   (2011-09-23 18:42:00) 

Здравствуйте.
У меня возникла проблема в следующем:
Навожу на котрол курсор, зажимаю ЛКМ. Перевожу на другой и отпускаю. При этом второй контрол не получает CM_MOUSEENTER и соответственно CM_MOUSELEAVE.
Как ее решить?

Пытался в WMLButtonUp добавить эту строку: Parent.Perform(CM_MOUSEENTER, 0, 0);после чего стало обрабатываться CM_MOUSELEAVE, но ENTER так и не было.


Puw   (2011-09-23 21:56:00) [1]

Упростил TWinControl.ControlAtPosдо поиска только по своему типу, отсылаю ему CM_MOUSEENTERи все работает.

Всем спасибо.


Dimka Maslov   (2011-09-23 20:37:00) [2]

СМ_MOUSEENTER отправляется контролу когда на него находит курсор, но не через очередь сообщений, а через метод Perform, ибо это внутренее сообщение VCL.

А функция, которая получает контрол по координатам называется TWinControl.ControlAtPos


Puw   (2011-09-23 20:25:00) [3]

Rouse_, зажал на первом, отпустил на втором.

Я так понял, что все эти CM_MOUSEENTER контролирует окно, но не понял в каких случаях оно отправляется.
Наверное, нужна функция, которая получает контрол из под мышки во время ее движения, но где она?


Dimka Maslov   (2011-09-23 19:51:00) [4]

При нажатии на кнопку над контролом он получает ВСЕ события от мыши до тех пор, пока кнопка не будет отпущена. Так работает выньда.


Rouse_   (2011-09-23 18:48:00) [5]

Второй контрол, это тот на который ты перевел мыш или тот на котором отпустил кнопку?


Наверх

Титульная страница Поиск, карта сайта Написать письмо