Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: COM/DCOM/ActiveX/ATL/CORBA > Курсор мыши вне ActiveX контрола.


Автор: Dogo 24.9.2007, 23:30
Всем привет!

Пытаюсь постичь создание ActiveX компонентов(MFC). Столкнулся с проблемой. Создаю кнопку, пытаюсь обработать события мыши. Если с нажатиями кнопок все тривиально, то вот с "уходом" курсора мыши с кнопки ничего не могу придумать... Задумка такова, когда курсор попадает на кнопку, кнопка визуально приближается, а когда курсор с покидает кнопку, она должна принять свое первоначальное состояние. Событие мышка над кнопкой обрабатываю WM_MOUSEMOVE... После ухода курсора с кнопки по понятным причинам она остается в своем "увеличенном положении" ... Как объяснить контролу что мышка не находится над ним? smile 

Автор: akizelokro 25.9.2007, 07:41
Попробуй "переключать" состояние контрола на его границе. Если left=0, кнопка в неактивном состоянии, если left==1, начинает визуально приближаться (и по всем границам по аналогии). Самый простой, по-моему, финт конем.

Автор: Mihhail 25.9.2007, 08:27
Цитата(akizelokro @  25.9.2007,  11:41 Найти цитируемый пост)
Попробуй "переключать" состояние контрола на его границе.

Ничего не получиться, при быстрых движениях указателя такое не возможно отследить.

В таких случаях используется захват мыши окном:
HWND SetCapture( HWND );
Вызываем её как при наведении указателя на контрол. После этого где бы указатель не находился сообщение WM_MOUSEMOVE будет приходить в указанное окно.
Проверяем координаты и если указатель уже не над нашим контролом освобождаем мышь:
BOOL ReleaseCapture(VOID);

Автор: Dogo 25.9.2007, 13:10
Mihhail, Огромное спасибо!  smile
То что нужно!!!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)