void CTripleLinkageOpt::SetThumbPosition(int nFirstPos, int nMidPos, int nLastPos)
{
    CPoint ptFirst, ptMid, ptLast;
    ptFirst= ptMid = ptLast = m_rcChannel.CenterPoint();


    if (m_bHorizontal)
    {
        ptFirst.x = m_szTicMarks->at(nFirstPos);
        ptMid.x = m_szTicMarks->at(nMidPos);
        ptLast.x = m_szTicMarks->at(nLastPos);
    }
    else
    {
        ptFirst.y = m_szTicMarks->at(nFirstPos);
        ptMid.y  = m_szTicMarks->at(nMidPos);
        ptLast.y = m_szTicMarks->at(nLastPos);
    }

    m_szThumb[0]->SetPosition(nFirstPos);
    m_szThumb[0]->MoveThumb(ptFirst);

    m_szThumb[1]->SetPosition(nMidPos);
    m_szThumb[1]->MoveThumb(ptFirst);

    m_szThumb[2]->SetPosition(nLastPos);
    m_szThumb[2]->MoveThumb(ptFirst);

    ReCalcChannelRect();
}
void CTripleLinkageOpt::OnLButtonDown(const CPoint& point)
{
    int nRet  = GetFocusThumb(point);

    if(nRet != -1) // begin to drag?
    {
        m_nFocusThumb = nRet;

        if( m_nFocusThumb == FOCUS_ON_TOPLEFT || m_nFocusThumb == FOCUS_ON_RIGHTBTM) //single button模式 两个从属的不能拖动
        {
            return;
        }
        m_bStartDraging = TRUE;
        //HWND hwnd = SetCapture(AfxGetApp()->GetMainWnd()->);
    }
    else
    {

        if( m_nFocusThumb == FOCUS_ON_TOPLEFT || m_nFocusThumb == FOCUS_ON_RIGHTBTM) //single button模式 两个从属的不能拖动
        {
            return;
        }
        MovePage(point);

        ReCalcChannelRect();
    }
}
void CMultiThumbOpt::OnLButtonUp(const CPoint& point)
{
	if(m_bStartDraging)// begin to drag?
	{
		CFSBThumb* pThumb = m_szThumb[m_nFocusThumb];

		m_bStartDraging = FALSE;
		//ReleaseCapture();

		int nPos = SearchThumbPosition(point);

		int nMin, nMax;
		GetThumbRange(m_nFocusThumb,  nMin, nMax);
		if (nPos >= nMax)
		{
			nPos = nMax;
		}
		if(nPos <= nMin)
		{
			nPos = nMin;
		}
		pThumb->SetPosition(nPos);

		MoveToPosition(m_nFocusThumb, nPos);

		ReCalcChannelRect();
	}
	((CFlexSlideWnd*)m_pParent)->SendCallBackMsg();
}
void CMultiThumbOpt::OnMouseMove(const CPoint& point)
{
	CFSBThumb* pThumb = m_szThumb[m_nFocusThumb];

	if(m_bStartDraging) // begin to drag?
	{
	
		CPoint ptPos = pThumb->GetPixPosition();
		CPoint ptNewPS = ptPos;
		int nMax, nMin;
		GetThumbRange(pThumb->GetPosition(), nMin, nMax);
		
		int nPixMin, nPixMax;
		nPixMin = m_szTicMarks->at(nMin);
		nPixMax = m_szTicMarks->at(nMax);


		if (m_bHorizontal)
		{
			nPixMax+=m_rcChannel.left;
			nPixMin+=m_rcChannel.left;

			ptNewPS.x  = point.x;

			if(point.x >= nPixMax)
			{
				ptNewPS.x = nPixMax;
			}
			if(point.x < nPixMin)
			{
				ptNewPS.x = nPixMin;
			}
		}
		else   // vertical
		{	
			nPixMax+=m_rcChannel.top;
			nPixMin+=m_rcChannel.top;

			int nTemp = nPixMin;
			nPixMin = nPixMax;
			nPixMax = nTemp;     // 交换一下,

			ptNewPS.y = point.y;

			if(point.y >= nPixMax)
			{
				ptNewPS.y = nPixMax;
			}
			if(point.y < nPixMin)
			{
				ptNewPS.y = nPixMin;
			}

		}

		pThumb->MoveThumb(ptNewPS);

		ReCalcChannelRect();
	}
}
void CTripleLinkageOpt::SetThumbPosition(int nIndex, int nPosition)
{
    if (nIndex < 3)
    {
        m_szThumb[nIndex]->SetPosition(nPosition);
        //m_szThumb[nIndex]->MoveThumb(nPosition);
        MoveToPosition(nIndex, nPosition);
    }

//////////////////////////////////////////////////////////////////////////
//	MoveToPosition(nIndex, nPosition);
    ReCalcChannelRect();
}
void CMultiThumbOpt::SetThumbPosition(int nIndex, int nPosition)
{	
	if (nPosition >= (int)m_szTicMarks->size())   // 超过刻度那么裁减掉
	{
		nPosition = m_szTicMarks->size()-1;
	}

	if (nIndex < (int)m_szThumb.size())
	{
		MoveToPosition(nIndex, nPosition);
		ReCalcChannelRect();
	}	
}
void CMultiThumbOpt::OnLButtonDown(const CPoint& point)
{
	int nRet  = GetFocusThumb(point);

	if(nRet != -1) // begin to drag?
	{	
		m_nFocusThumb = nRet;
		
		m_bStartDraging = TRUE;
		//HWND hwnd = SetCapture(AfxGetApp()->GetMainWnd()->);
	}
	else
	{
		MovePage(point);
		ReCalcChannelRect();
	}
}
void CTripleLinkageOpt::OnMouseMove(const CPoint& point)
{
    ASSERT(m_nFocusThumb != FOCUS_ON_EMPTY);

    if(m_bStartDraging) // begin to drag?
    {
        if (m_nFocusThumb == FOCUS_ON_MID)
        {
            MouseMoveForMainThumb(point);
        }
        else
        {
            MouseMoveForOtherThumb(point);
        }

        ReCalcChannelRect();
    }

}
BOOL CMultiThumbOpt::InitThumb(BOOL bHorizontal, int nThumbWidth, CRect& rcChannel)
{	
	SetHorizontal(bHorizontal);	
	SetChannelRect(rcChannel);
	SetThumbWidth(nThumbWidth);

	CPoint ptCenter;
	ptCenter = rcChannel.CenterPoint();	
	if (bHorizontal)
	{
		ptCenter.x =rcChannel.left;
	}
	else
	{
		ptCenter.y = rcChannel.top;
	}
	
	ASSERT(m_szThumb.size() <= m_szTicMarks->size());

	int nPos = 0;
	for (UINT i = 0; i < m_szThumb.size(); i++)
	{
		nPos = i ;
		if (m_bHorizontal)
		{
			ptCenter.x = m_szTicMarks->at(nPos)+m_rcChannel.left;
		}
		else
		{
			ptCenter.y = m_szTicMarks->at(nPos)+m_rcChannel.top;
		}

		m_szThumb[i]->InitThumb(ptCenter, nPos, THUNMB_RECT_HEIGHT, nThumbWidth, m_bHorizontal);
       // m_szThumb[i]->SetMixValue(m_nM)	
	}
	m_nFocusThumb = 0;

	ReCalcChannelRect();
	return TRUE;
}
void CTripleLinkageOpt::OnLButtonUp(const CPoint& point)
{
    if(m_bStartDraging)// begin to drag?
    {
        if (m_nFocusThumb == FOCUS_ON_MID)
        {
            LBtnUpForMainThumb(point);
        }
        else
        {
            LBtnUpForOtherThumb(point);
        }

        ReCalcChannelRect();
    }
    if (m_nFocusThumb == FOCUS_ON_MID)
    {
        ((CFlexSlideWnd*)m_pParent)->SendCallBackMsg();
    }


}