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(); } }