コード例 #1
0
// 专门为两个从属thumb movepage使用
void CTripleLinkageOpt::LBtnUpForOtherThumb(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);
    }
}
コード例 #2
0
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();
}
コード例 #3
0
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();
	}
}
コード例 #4
0
//
// ICListSlider::ResizeKnob
//
// Resize the knob
//
void ICListSlider::ResizeKnob()
{
  ASSERT(controlState & STATE_ACTIVE)
  ASSERT(listBoxes.GetCount())

  // This only resizes the knob on the first list box size
  ListBoxWatcher *watch = listBoxes[0];

  S32 vis = watch->vis->GetIntegerValue();
  S32 cnt = watch->count->GetIntegerValue();
  F32 newPct;

  if (cnt == 0)
  {
    // List is empty, avoid divide by zero
    newPct = 1.0F;
  }
  else
  {
    // Clamp size fo 0-100%
    newPct = Clamp<F32>(0.0F, F32(vis) / F32(cnt), 1.0F);
  }

  // Did it actually change size?
  if (knobPct != newPct)
  {
    knobPct = newPct;

    // Calculate new slider size
    ClipRect thumbRange = GetThumbRange();
    Point<S32> newSize;

    if (horizontal)
    {
      newSize.x = Clamp<S32>
                  (
                    thumbRange.Height(),
                    Utils::FtoL(knobPct * thumbRange.Width()),
                    thumbRange.Width()
                  );
      newSize.y = thumbRange.Height();
    }
    else
    {
      newSize.x = thumbRange.Width();
      newSize.y = Clamp<S32>
                  (
                    thumbRange.Width(),
                    Utils::FtoL(knobPct * thumbRange.Height()),
                    thumbRange.Height()
                  );
    }

    // Resize it
    thumbBtn->Resize(newSize);
  }
}
コード例 #5
0
// 专门为主Thumb使用
void CTripleLinkageOpt::MouseMoveForOtherThumb(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
        {
            nPixMin = m_szTicMarks->at(nMax);
            nPixMax = m_szTicMarks->at(nMin);

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

        }

        pThumb->MoveThumb(ptNewPS);
    }
}
コード例 #6
0
// 专门为两个从属thumb movepage使用
void CTripleLinkageOpt::MovePageForOtherThumb(const CPoint& pt)
{

    CFSBThumb* pThumb = m_szThumb[m_nFocusThumb];
    ASSERT(pThumb);

    CPoint ptPos = pThumb->GetPixPosition();
    int nPosition	= pThumb->GetPosition();

    int nMax, nMin;
    GetThumbRange(m_nFocusThumb, nMin, nMax);

    CPoint ptNewPS = ptPos;
    int		nNewPosition = nPosition;

    if (m_bHorizontal)
    {
        if (pt.x > ptPos.x)  // move right
        {
            nNewPosition = nPosition+m_nLengthOfPage;

            if(nNewPosition <= nMax)
            {
                ptNewPS.x = m_szTicMarks->at(nNewPosition)+m_rcChannel.left;
            }
            else
            {
                nNewPosition = nMax;
                ptNewPS.x = m_szTicMarks->at(nNewPosition)+m_rcChannel.left;
            }
        }
        else // move left
        {
            nNewPosition = nPosition - m_nLengthOfPage;
            if(nNewPosition >= nMin)
            {
                ptNewPS.x = m_szTicMarks->at(nNewPosition)+m_rcChannel.left;
            }
            else
            {
                nNewPosition = nMin;
                ptNewPS.x = m_szTicMarks->at(nNewPosition)+m_rcChannel.left;
            }
        }
    }
    else
    {
        if (pt.y > ptPos.y)  // move down
        {
            nNewPosition = nPosition-m_nLengthOfPage; // down -

            if(nNewPosition <= nMin)
            {
                nNewPosition = nMin;
                ptNewPS.y = m_szTicMarks->at(nNewPosition)+m_rcChannel.top;
            }
            else
            {
                ptNewPS.y = m_szTicMarks->at(nNewPosition)+m_rcChannel.top;
            }

        }
        else // move up
        {
            nNewPosition = nPosition + m_nLengthOfPage;
            if(nNewPosition >= nMax)
            {
                nNewPosition = nMax;
                ptNewPS.y = m_szTicMarks->at(nNewPosition)+m_rcChannel.top;

            }
            else
            {
                ptNewPS.y = m_szTicMarks->at(nNewPosition)+m_rcChannel.top;
            }
        }
    }

    pThumb->SetPosition(nNewPosition);
    pThumb->MoveThumb(ptNewPS);

}