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();
    }
  • 相关阅读:
    AngularJS7那些不得不说的事故
    Python和C++的混合编程(使用Boost编写Python的扩展包)
    为OPENCV添加freetype支持并显示中文字符(在mac上编译opencv及contrib库)
    OpenProject基础使用介绍
    负载均衡
    如何搭建wordpress ,wecenter
    nginx 模块
    Nginx
    http 协议
    ssh
  • 原文地址:https://www.cnblogs.com/2018shawn/p/11548208.html
Copyright © 2011-2022 走看看