zoukankan      html  css  js  c++  java
  • 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();
    }
  • 相关阅读:
    文件操作
    验证进程 及jion方法
    进程笔记
    网络通信名词总结
    网络QQ聊天代码实例
    网络通信 粘包和 缓冲器
    udp
    UVALive 3983 Robotruck (单调队列,dp)
    UVA 10891 Game of Sum (决策优化)
    Uva 10635 Prince and Princess (LCS变形LIS)
  • 原文地址:https://www.cnblogs.com/2018shawn/p/11548208.html
Copyright © 2011-2022 走看看