MFC使用TRACKMOUSEEVENT触发mouseHover和mouseLeave
Posted 2018shawn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC使用TRACKMOUSEEVENT触发mouseHover和mouseLeave相关的知识,希望对你有一定的参考价值。
为对话框添加WM_MOUSEHOVER或WM_MOUSELEAVE消息并不会响应。 MFC需要特殊处理,其中一法就是使用TRACKMOUSEEVENT
void CmfcDlgDlg::OnMouseMove(UINT nFlags, CPoint point) // TODO: 在此添加消息处理程序代码和/或调用默认值 //GetDlgItem(IDC_BUTTON)->SetWindowText("Move"); if (!m_bTracking) TRACKMOUSEEVENT tme; tme.cbSize = sizeof(TRACKMOUSEEVENT); tme.dwFlags = TME_LEAVE | TME_HOVER;//要触发的消息 tme.hwndTrack = this->m_hWnd; tme.dwHoverTime = 10;// 若不设此参数,则无法触发mouseHover if (::_TrackMouseEvent(&tme)) //MOUSELEAVE|MOUSEHOVER消息由此函数触发 m_bTracking = true; CDialogEx::OnMouseMove(nFlags, point); void CmfcDlgDlg::OnMouseHover(UINT nFlags, CPoint point) // TODO: 在此添加消息处理程序代码和/或调用默认值 GetDlgItem(IDC_BUTTON)->SetWindowText("Hover"); m_bTracking = false; CDialogEx::OnMouseHover(nFlags, point); void CmfcDlgDlg::OnMouseLeave() // TODO: 在此添加消息处理程序代码和/或调用默认值 GetDlgItem(IDC_BUTTON)->SetWindowText("Leave"); m_bTracking = false; CDialogEx::OnMouseLeave();
以上是关于MFC使用TRACKMOUSEEVENT触发mouseHover和mouseLeave的主要内容,如果未能解决你的问题,请参考以下文章