эффект типа "OnMouseOver"
От: raeen  
Дата: 07.01.03 14:19
Оценка:
Люди!
Подскажите как, в сложившейся практике, принято реализовывать такю штуку, как изменение вида кнопки при наведении на нее указателя?
Ранее не касался наведения такого рода красивости в программе, и мне показался очевидным тот вариант, что функции CButton::DrawItem() будет передаваться нужный мне itemState, но это не так.
Re: эффект типа "OnMouseOver"
От: OLEGus1 Россия  
Дата: 07.01.03 15:22
Оценка:
Здравствуйте, raeen, Вы писали:

R>изменение вида кнопки при наведении на нее указателя?


OnMouseMove
Crescite, nos qui vivimus, multiplicamini
Re[2]: эффект типа "OnMouseOver"
От: Можаев Михаил Россия www.mozhay.chat.ru
Дата: 08.01.03 10:35
Оценка: 3 (1)
Здравствуйте, OLEGus1, Вы писали:

OLE>Здравствуйте, raeen, Вы писали:


R>>изменение вида кнопки при наведении на нее указателя?


OLE>OnMouseMove


Для того, чтобы изменить вид кнопки при наведении на нее курсора, этого достаточно. Но обычно есть еще необходимость изменить его обратно, когда мышь "ушла" с кнопки.
Тут можно воспользоваться функцией TrackMouseEvent() и сообщением WM_MOUSELEAVE.

Примерно так:
void CMyView::OnMouseMove(UINT nFlags, CPoint point) 
{
    if (!track_mouse_leave)
    {
        TRACKMOUSEEVENT tme;
        tme.cbSize = sizeof(tme);
        tme.dwFlags = TME_LEAVE;
        tme.hwndTrack = GetSafeHwnd();
        _TrackMouseEvent(&tme);
        track_mouse_leave = true;
    }

    // Отрабатываем "приход" мыши
    ...
    
    CScrollView::OnMouseMove(nFlags, point);
}

LPARAM CMyView::OnMouseLeave(WPARAM w, LPARAM l)
{
    track_mouse_leave = false;
    // Отрабатываем "уход" мыши
    ...

    return 0;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.