Как обработать событие наведения мыши для определенного элемента управления в Microsoft visual C ++ (MFC)?

В моем приложении мне нужно обработать событие наведения мыши, чтобы изменить фон кнопки. Используя мастер классов MFC, я не смог найти запись при наведении мыши в списке событий для этого элемента. Я пытался с помощью PreTranslateMessage, но это не работает. Как я могу справиться с этим событием?

0

Решение

События наведения мыши по умолчанию не генерируются. Вы должны запросить их по телефону TrackMouseEvent с правильно заселенным TRACKMOUSEEVENT структура:

TRACKMOUSEEVENT tme = { 0 };
tme.cbSize = sizeof( tme );
tme.dwFlags = TME_HOVER;
tme.hwndTrack = myButton;
tme.dwHoverTime = myHoverTime;  // HOVER_DEFAULT, or the hover timeout in milliseconds.
::TrackMouseEvent( &tme );

Затем система сгенерирует WM_MOUSEHOVER сообщения, если мышь находится над MyButton за myHoverTime миллисекунды.

Так как WM_MOUSEHOVER сообщение отправляется в окно, в котором запрашиваются сообщения при наведении курсора мыши, вам нужно будет получить пользовательский элемент управления кнопки с соответствующими записями в его карте сообщений. В частности, вам придется использовать ON_WM_MOUSEHOVER() макрос и реализовать afx_msg void OnMouseHover (UINT, CPoint) (увидеть WM_ Обработчики сообщений: L — M для справки).

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]