woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

在一个控件上面多次犹豫的办法

 

关键的地方

 

//=============================================================================
LRESULT CGdipButton::OnMouseHover(WPARAM wparam, LPARAM lparam)
//=============================================================================
{
    printf("CGdipButton::OnMouseHover\n");
    m_bIsHovering = TRUE;
    this->DeleteToolTip();

    // Create a new Tooltip with new Button Size and Location
    this->SetToolTipText(m_tooltext);

    if (m_pToolTip != NULL)
    {
        if (::IsWindow(m_pToolTip->m_hWnd))
        {
            //Display ToolTip
            m_pToolTip->Update();
        }
    }
    //---- 增加这个,触发多次犹豫
    m_bIsTracking = FALSE;
    return 0;
}

//=============================================================================
LRESULT CGdipButton::OnMouseLeave(WPARAM wparam, LPARAM lparam)
//=============================================================================
{
    m_bIsTracking = FALSE;
    m_bIsHovering = FALSE;
    this->Invalidate();
    return 0;
}

//=============================================================================
void CGdipButton::OnMouseMove(UINT nFlags, CPoint point)
//=============================================================================
{
    //---- 这里需要这么写
    if (FALSE == m_bIsTracking)
    {
        TRACKMOUSEEVENT tme = {0};
        tme.cbSize        = sizeof(tme);
        tme.hwndTrack    = m_hWnd;
        tme.dwFlags        = TME_LEAVE|TME_HOVER;
        tme.dwHoverTime = 300; //---- 300毫秒的犹豫时间
        m_bIsTracking    = _TrackMouseEvent(&tme);
        this->Invalidate();
    }
    CButton::OnMouseMove(nFlags, point);
}

posted on 2011-03-15 14:08 肥仔 阅读(496) 评论(0)  编辑 收藏 引用 所属分类: MFC存档


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理