Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.16;
Скачать: CL | DM;

Вниз

Вне зоны доступа! WM_MOUSEMOVE   Найти похожие ветки 

 
AndreyRU   (2007-05-30 08:03) [0]

Доброго времени суток Мастера!!

Встала острая необходимость отработать в своей проге одну штуку. Задача следующая: на TPanel или любой производной TWinControl после нажатия Л.К мыши, реагировать на перемещение курсора. Внутри самого контрола я отрабатываю WM_MOUSEMOVE, а вот если выйти за его границы, то сообщения прекращают поступать. Сейчас использую хук на мыш, но более чем уверен что можно использовать и более простой механизм. Итак: Необходимо отработать события перемещения курсора и MouseUP за пределами контрола. Спасибо за любую помощ!


 
Loginov Dmitry ©   (2007-05-30 08:08) [1]

Не надо ничего выдумывать. Если произошло нажатие левой кнопки мыши OnMouseDown, то OnMouseMove будет всегда выполнятся, пока не произойдет OnMouseUp


 
AndreyRU   (2007-05-30 08:14) [2]

Мммм.. Странно, но у меня так не прокатывает. Когда я выхожу за пределы окна с нажатой Л.К. то MouseMove перестает отрабатываться, и если отпустить Л.К вне моего контрола то MouseUp тоже не срабатывает.


 
Loginov Dmitry ©   (2007-05-30 08:30) [3]

Не верю.

Создай новое приложение, добавь одну панельку и вставь следующий код:

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
 Beep;
end;


После нажатия и удерживания левой кнопки должно пищать при любом движении мышки в любом месте экрана.


 
Однокамушкин   (2007-05-30 08:39) [4]

Чтобы перемещение мыши отлавливалось за пределами контрола, контрол должен захватить мышь, т.е. сделать SetCapture... при отпускании кнопки захват нужно снять... некоторые контролы делают это самостоятельно, некоторые нет, это зависит от наличия флага csCaptureMouse в свойстве ControlStyle... установите этот флаг у своего контрола, и будет вам счастье...


 
AndreyRU   (2007-05-30 08:40) [5]

Мдя. Верно.. Спасибо!!


 
DVM ©   (2007-05-30 10:46) [6]

Нажатие и удержание над контролом левой кнопки мыши это тот же самый SetCapture. Пока кнопка мыши не будет отпущена, все сообщения мыши будут приходить в окно контрола и отпускание кнопки за пределами контрола в том числе.


 
Игорь Шевченко ©   (2007-05-30 11:03) [7]


> Сейчас использую хук на мыш, но более чем уверен что можно
> использовать и более простой механизм


SetCapture/ReleaseCapture



Страницы: 1 вся ветка

Текущий архив: 2007.12.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
2-1195625789
Kolan
2007-11-21 09:16
2007.12.16
Помогите сделать маску в MaskEdit.


2-1195750473
Михаил С
2007-11-22 19:54
2007.12.16
приостановить выполнение программы


15-1195131734
Ega23
2007-11-15 16:02
2007.12.16
Так всё-таки: как канонически правильно передавать объекты


4-1180611760
MiHoY
2007-05-31 15:42
2007.12.16
декодер сигналов ДУ


15-1195058193
VmR
2007-11-14 19:36
2007.12.16
По какому принципу изменяют версию программы