Delphi XE2 CMMouseLeave не запускается на TCustomControl
В Delphi 5 это работало. У меня есть компонент, который происходит от TCustomControl, и я реализую сообщение cmmouseleave:
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
Теперь, если я просто перемещаю мышь над элементом управления, сообщение сработает, но если я перемещаю мышь, удерживая левую кнопку мыши нажатой, то это сообщение не сработает. AFAIK Я не вызывал метод begindrag, а режим перетаскивания установлен на ручной. Любой ключ к тому, что может происходить?
1 ответ
Мышь захватывается при нажатии левой кнопки. Следовательно, элемент управления будет получать сообщения о перемещении мыши (WM_MOUSEMOVE
), даже если мышь находится вне контроля. Когда кнопка отпущена, она получит сообщение о выходе из мыши. Это также должно быть в случае с D5.
Вы можете исключить csCaptureMouse
от ControlStyle
если вы не хотите, чтобы мышь была захвачена в ответ на WM_LBUTTONDOWN
,