MFC使用TRACKMOUSEEVENT触发mouseHover和mouseLeave
2020-12-13 14:00
标签:als div track 调用 event 默认值 程序 dialog void 为对话框添加WM_MOUSEHOVER或WM_MOUSELEAVE消息并不会响应。 MFC需要特殊处理,其中一法就是使用TRACKMOUSEEVENT MFC使用TRACKMOUSEEVENT触发mouseHover和mouseLeave 标签:als div track 调用 event 默认值 程序 dialog void 原文地址:https://www.cnblogs.com/2018shawn/p/11548208.htmlvoid 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
文章链接:http://soscw.com/essay/33602.html