首先在头文件中插入OnMouseLeave消息
//
{{AFX_MSG(CLoadBitMapDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnView();
afx_msg void OnMouseLeave();
afx_msg void OnMouseOver();
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
// }}AFX_MSG
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnView();
afx_msg void OnMouseLeave();
afx_msg void OnMouseOver();
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
// }}AFX_MSG
然后在cpp中添加消息映射
BEGIN_MESSAGE_MAP(CLoadBitMapDlg, CDialog)
// {{AFX_MSG_MAP(CLoadBitMapDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_VIEW, OnView)
ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave)
ON_MESSAGE(WM_MOUSEHOVER,OnMouseOver)
ON_WM_MOUSEMOVE()
// }}AFX_MSG_MAP
END_MESSAGE_MAP()
// {{AFX_MSG_MAP(CLoadBitMapDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_VIEW, OnView)
ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave)
ON_MESSAGE(WM_MOUSEHOVER,OnMouseOver)
ON_WM_MOUSEMOVE()
// }}AFX_MSG_MAP
END_MESSAGE_MAP()
然后实现他
void
CLoadBitMapDlg::OnMouseLeave()
... {
MessageBox("鼠标已离开");
m_bMouseTracking = FALSE;
}
... {
MessageBox("鼠标已离开");
m_bMouseTracking = FALSE;
}
最重要的,添加OnMouseMove
void
CLoadBitMapDlg::OnMouseMove(UINT nFlags, CPoint point)
... {
// TODO: Add your message handler code here and/or call default
if (!m_bMouseTracking)
...{//鼠标第一次移入窗口时,请求一个WM_MOUSELEAVE消息
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = m_hWnd;
tme.dwFlags = TME_LEAVE;
_TrackMouseEvent(&tme);
m_bMouseTracking = TRUE;
}
CLoadBitMapDlg::OnMouseMove(nFlags, point);
}
... {
// TODO: Add your message handler code here and/or call default
if (!m_bMouseTracking)
...{//鼠标第一次移入窗口时,请求一个WM_MOUSELEAVE消息
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = m_hWnd;
tme.dwFlags = TME_LEAVE;
_TrackMouseEvent(&tme);
m_bMouseTracking = TRUE;
}
CLoadBitMapDlg::OnMouseMove(nFlags, point);
}
如果你想要在控件中实现的话,那就需要重载控件。比如button