码迷,mamicode.com
首页 > 编程语言 > 详细

MFC使用TRACKMOUSEEVENT触发mouseHover和mouseLeave

时间:2019-09-19 12:35:28      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:als   div   track   调用   event   默认值   程序   dialog   void   

 

为对话框添加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

标签:als   div   track   调用   event   默认值   程序   dialog   void   

原文地址:https://www.cnblogs.com/2018shawn/p/11548208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!