Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Курсор мыши вне ActiveX контрола. Отлов и обработка события. 
V
    Опции темы
Dogo
  Дата 24.9.2007, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 20.2.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 9



Всем привет!

Пытаюсь постичь создание ActiveX компонентов(MFC). Столкнулся с проблемой. Создаю кнопку, пытаюсь обработать события мыши. Если с нажатиями кнопок все тривиально, то вот с "уходом" курсора мыши с кнопки ничего не могу придумать... Задумка такова, когда курсор попадает на кнопку, кнопка визуально приближается, а когда курсор с покидает кнопку, она должна принять свое первоначальное состояние. Событие мышка над кнопкой обрабатываю WM_MOUSEMOVE... После ухода курсора с кнопки по понятным причинам она остается в своем "увеличенном положении" ... Как объяснить контролу что мышка не находится над ним? smile 
--------------------
 
PM MAIL ICQ   Вверх
akizelokro
Дата 25.9.2007, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: нет
Всего: 5



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


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
Mihhail
Дата 25.9.2007, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 13.9.2007

Репутация: нет
Всего: 9



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

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

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

Это сообщение отредактировал(а) Mihhail - 25.9.2007, 08:31
PM MAIL WWW   Вверх
Dogo
Дата 25.9.2007, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 20.2.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 9



Mihhail, Огромное спасибо!  smile
То что нужно!!!  smile 
--------------------
 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0795 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.