ON_WM_MOUSEHOVER消息要生效,要配合ON_WM_MOUSEMOVE一起使用.代碼如下:
void?CYuButton::OnMouseMove(UINT?nFlags,?CPoint?point)
{//?TODO:?在此添加消息處理程序代碼和/或調用默認值TRACKMOUSEEVENT??tme?=?{?0?};tme.cbSize?=?sizeof(TRACKMOUSEEVENT);tme.dwFlags?=?TME_HOVER?|?TME_LEAVE;tme.dwHoverTime?=?50;tme.hwndTrack?=?this->m_hWnd;if?(TrackMouseEvent(&tme))?{}CWnd::OnMouseMove(nFlags,?point);
}
void?CYuButton::OnMouseHover(UINT?nFlags,?CPoint?point)
{//?TODO:?在此添加消息處理程序代碼和/或調用默認值m_bIsDown?=?TRUE;Invalidate();CWnd::OnMouseHover(nFlags,?point);
}
以上是鼠標放在控件上時的消息響應.鼠標離開控件直接處理ON_WM_MOUSELEAVE消息,如:
void?CYuButton::OnMouseLeave()
{//?TODO:?在此添加消息處理程序代碼和/或調用默認值m_bIsDown?=?FALSE;Invalidate();CWnd::OnMouseLeave();
}
也可同時處理失去焦點消息ON_WM_KILLFOCUS,如下:
void?CYuButton::OnKillFocus(CWnd*?pNewWnd)
{CWnd::OnKillFocus(pNewWnd);m_bIsDown?=?TRUE;Invalidate(TRUE);
}
轉載于:https://blog.51cto.com/9233403/2093243