void CMyButton::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(m_bTrackLeave == FALSE )
{
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = m_hWnd;
tme.dwFlags = TME_LEAVE|TME_HOVER;
tme.dwHoverTime = 5;
m_bTrackLeave = ::_TrackMouseEvent(&tme);
}
}
LRESULT CMyButton::OnMouseLeave(WPARAM wParam,LPARAM lParam)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
this->GetParent()->GetDlgItem(IDC_TEXT)->SetWindowText(L"鼠标离开!");
m_bTrackLeave = FALSE;
return 0;
}
LRESULT CMyButton::OnMouseHover(WPARAM wParam,LPARAM lParam)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
this->GetParent()->GetDlgItem(IDC_TEXT)->SetWindowText(L"鼠标进入!");
return 0;
}
BEGIN_MESSAGE_MAP(CMyButton, CButton)
ON_WM_MOUSEMOVE()
ON_MESSAGE( WM_MOUSEHOVER, OnMouseHover )
ON_MESSAGE( WM_MOUSELEAVE, OnMouseLeave )
END_MESSAGE_MAP()
public:
afx_msg LRESULT OnMouseHover(WPARAM wParam,LPARAM lParam);
afx_msg LRESULT OnMouseLeave(WPARAM wParam,LPARAM lParam);
BOOL m_bTrackLeave; // 捕获设置标记
一共分3步来进行,IDC_TEXT是一个静态文本控件。初始化 m_bTrackLeave = FALSE;