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

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

 

关键的地方

 

//=============================================================================
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);
}

你可能感兴趣的:(在一个控件上面多次犹豫的办法)