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的主要内容,如果未能解决你的问题,请参考以下文章
TrackMouseEvent与_TrackMouseEvent
MFC 中Static text 如何响应鼠标hover事件?
delphi OnMouseLeave 事件不灵敏及解决之道(使用TrackMouseEvent函数进行加强)
在 MFC 中调用 EndDialog() 时,类析构函数何时触发?
MFC使用ListControl时,第一次左键点击ListControl的列表时无法触发NM_CLICK消息,点击第二次时才能触发