📄 sliderctrl.cpp
字号:
} else { if(m_dwExStyle & RXSC_CD_SHOW) nTemp = rcClient.top + RXSC_MARGIN + RXSC_TOOLTIP_MARGIN; else nTemp = rcClient.top + RXSC_MARGIN; rcGrip.SetRect(nPixel, nTemp, nPixel+RXSC_GRIP_WIDTH, nTemp+RXSC_GRIP_HEIGHT); } return rcGrip;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void RxSliderCtrl::RecalcLayout(){ CRect rcClient; GetClientRect(rcClient); // left,right margin m_nPixelMin = RXSC_MARGIN; m_nPixelMax = (rcClient.right-rcClient.left) - RXSC_MARGIN; if(m_dwExStyle & RXSC_GC_SINGLE) { m_nPixelLeft = m_nPixelMin; m_nPixelCenter = 0; m_nPixelRight = 0; } else if(m_dwExStyle & RXSC_GC_MULTI) { m_nPixelLeft = m_nPixelMin; m_nPixelCenter = 0; m_nPixelRight = m_nPixelLeft + RXSC_GRIP_WIDTH; } else if(m_dwExStyle & RXSC_GC_MULTI_EX) { m_nPixelLeft = m_nPixelMin; m_nPixelCenter = m_nPixelLeft + RXSC_GRIP_WIDTH; m_nPixelRight = m_nPixelCenter + RXSC_GRIP_WIDTH; } RedrawWindow();}BOOL RxSliderCtrl::Increase(){ int nOldPos; if(m_dwExStyle & RXSC_GC_SINGLE) { if(m_nSelGripOld == RXSC_MOUSE_GRIP_LEFT) { nOldPos = m_nPosLeft; m_nPosLeft++; if(m_nPosLeft > m_nPosMax) m_nPosLeft = m_nPosMax; if(nOldPos == m_nPosLeft) return FALSE; RedrawWindow(); return TRUE; } } else if(m_dwExStyle & RXSC_GC_MULTI) { if(m_nSelGripOld == RXSC_MOUSE_GRIP_LEFT) { nOldPos = m_nPosLeft; m_nPosLeft++; if(m_nPosLeft > m_nPosRight) { m_nPosRight = m_nPosLeft; if(m_nPosRight > m_nPosMax) m_nPosLeft = m_nPosRight = m_nPosMax; } if(nOldPos == m_nPosLeft) return FALSE; RedrawWindow(); return TRUE; } else if(m_nSelGripOld == RXSC_MOUSE_GRIP_RIGHT) { nOldPos = m_nPosRight; m_nPosRight++; if(m_nPosRight > m_nPosMax) m_nPosRight = m_nPosMax; if(nOldPos == m_nPosRight) return FALSE; RedrawWindow(); return TRUE; } else if(m_nSelGripOld == RXSC_MOUSE_GRIP_REGION) { nOldPos = m_nPosRight; m_nPosLeft++; m_nPosRight++; if(m_nPosRight > m_nPosMax) { m_nPosLeft--; m_nPosRight--; } if(nOldPos == m_nPosRight) return FALSE; RedrawWindow(); return TRUE; } } else if(m_dwExStyle & RXSC_GC_MULTI_EX) { if(m_nSelGripOld == RXSC_MOUSE_GRIP_LEFT) { nOldPos = m_nPosLeft; m_nPosLeft++; if(m_nPosLeft > m_nPosCenter) { m_nPosCenter = m_nPosLeft; if(m_nPosCenter > m_nPosRight) { m_nPosRight = m_nPosCenter; if(m_nPosRight > m_nPosMax) m_nPosLeft = m_nPosCenter = m_nPosRight = m_nPosMax; } } if(nOldPos == m_nPosLeft) return FALSE; RedrawWindow(); return TRUE; } else if(m_nSelGripOld == RXSC_MOUSE_GRIP_CENTER) { nOldPos = m_nPosCenter; m_nPosCenter++; if(m_nPosCenter > m_nPosRight) m_nPosCenter = m_nPosRight; if(nOldPos == m_nPosCenter) return FALSE; RedrawWindow(); return TRUE; } else if(m_nSelGripOld == RXSC_MOUSE_GRIP_RIGHT) { nOldPos = m_nPosRight; if(m_nPosCenter == m_nPosRight) m_nPosCenter++; m_nPosRight++; if(m_nPosRight > m_nPosMax) m_nPosRight = m_nPosMax; if(nOldPos == m_nPosRight) return FALSE; RedrawWindow(); return TRUE; } else if(m_nSelGripOld == RXSC_MOUSE_GRIP_REGION) { nOldPos = m_nPosRight; m_nPosLeft++; m_nPosCenter++; m_nPosRight++; if(m_nPosRight > m_nPosMax) { m_nPosLeft--; m_nPosCenter--; m_nPosRight--; } if(nOldPos == m_nPosRight) return FALSE; RedrawWindow(); return TRUE; } } return FALSE;}BOOL RxSliderCtrl::Decrease(){ int nOldPos; if(m_dwExStyle & RXSC_GC_SINGLE) { if(m_nSelGripOld == RXSC_MOUSE_GRIP_LEFT) { nOldPos = m_nPosLeft; m_nPosLeft--; if(m_nPosLeft < m_nPosMin) m_nPosLeft = m_nPosMin; if(nOldPos == m_nPosLeft) return FALSE; RedrawWindow(); return TRUE; } } else if(m_dwExStyle & RXSC_GC_MULTI) { if(m_nSelGripOld == RXSC_MOUSE_GRIP_LEFT) { nOldPos = m_nPosLeft; m_nPosLeft--; if(m_nPosLeft < m_nPosMin) m_nPosLeft = m_nPosMin; if(nOldPos == m_nPosLeft) return FALSE; RedrawWindow(); return TRUE; } else if(m_nSelGripOld == RXSC_MOUSE_GRIP_RIGHT) { nOldPos = m_nPosRight; m_nPosRight--; if(m_nPosRight < m_nPosLeft) { m_nPosLeft = m_nPosRight; if(m_nPosLeft < m_nPosMin) m_nPosLeft = m_nPosRight = m_nPosMin; } if(nOldPos == m_nPosRight) return FALSE; RedrawWindow(); return TRUE; } else if(m_nSelGripOld == RXSC_MOUSE_GRIP_REGION) { nOldPos = m_nPosLeft; m_nPosLeft--; m_nPosRight--; if(m_nPosLeft < m_nPosMin) { m_nPosLeft++; m_nPosRight++; } if(nOldPos == m_nPosRight) return FALSE; RedrawWindow(); return TRUE; } } else if(m_dwExStyle & RXSC_GC_MULTI_EX) { if(m_nSelGripOld == RXSC_MOUSE_GRIP_LEFT) { nOldPos = m_nPosLeft; if(m_nPosLeft == m_nPosCenter) m_nPosCenter--; m_nPosLeft--; if(m_nPosLeft < m_nPosMin) m_nPosLeft = m_nPosMin; if(nOldPos == m_nPosLeft) return FALSE; RedrawWindow(); return TRUE; } else if(m_nSelGripOld == RXSC_MOUSE_GRIP_CENTER) { nOldPos = m_nPosCenter; m_nPosCenter--; if(m_nPosCenter < m_nPosLeft) m_nPosCenter = m_nPosLeft; if(nOldPos == m_nPosCenter) return FALSE; RedrawWindow(); return TRUE; } else if(m_nSelGripOld == RXSC_MOUSE_GRIP_RIGHT) { nOldPos = m_nPosRight; m_nPosRight--; if(m_nPosRight < m_nPosCenter) { m_nPosCenter = m_nPosRight; if(m_nPosCenter < m_nPosLeft) { m_nPosLeft = m_nPosCenter; if(m_nPosLeft < m_nPosMin) m_nPosLeft = m_nPosCenter = m_nPosRight = m_nPosMin; } } if(nOldPos == m_nPosRight) return FALSE; RedrawWindow(); return TRUE; } else if(m_nSelGripOld == RXSC_MOUSE_GRIP_REGION) { nOldPos = m_nPosLeft; m_nPosLeft--; m_nPosCenter--; m_nPosRight--; if(m_nPosLeft < m_nPosMin) { m_nPosLeft++; m_nPosCenter++; m_nPosRight++; } if(nOldPos == m_nPosLeft) return FALSE; RedrawWindow(); return TRUE; } } return FALSE;}void RxSliderCtrl::SetSelGripOld(UINT nIndex){ m_nSelText = m_nSelGripOld = nIndex; RedrawWindow();}void RxSliderCtrl::SetRange(int nMin, int nMax, BOOL bRedraw){// ASSERT(nMin <= nMax); m_nPosMin = nMin; m_nPosMax = nMax; if(m_dwExStyle & RXSC_GC_SINGLE) { if(m_nPosLeft < m_nPosMin) m_nPosLeft = m_nPosMin; if(m_nPosLeft > m_nPosMax) m_nPosLeft = m_nPosMax; } else if(m_dwExStyle & RXSC_GC_MULTI) { if(m_nPosLeft < m_nPosMin) m_nPosLeft = m_nPosMin; if(m_nPosRight < m_nPosMin) m_nPosRight = m_nPosMin; if(m_nPosLeft > m_nPosMax) m_nPosLeft = m_nPosMax; if(m_nPosRight > m_nPosMax) m_nPosRight = m_nPosMax; } else if(m_dwExStyle & RXSC_GC_MULTI_EX) { if(m_nPosLeft < m_nPosMin) m_nPosLeft = m_nPosMin; if(m_nPosRight < m_nPosMin) m_nPosRight = m_nPosMin; if(m_nPosCenter < m_nPosLeft) m_nPosCenter = m_nPosLeft; if(m_nPosLeft > m_nPosMax) m_nPosLeft = m_nPosMax; if(m_nPosRight > m_nPosMax) m_nPosRight = m_nPosMax; if(m_nPosCenter > m_nPosRight) m_nPosCenter = m_nPosRight; } if(bRedraw) RedrawWindow();}void RxSliderCtrl::SetLeftPos(int nPosLeft, BOOL bRedraw){ if(m_dwExStyle & RXSC_GC_SINGLE) { if(nPosLeft < m_nPosMin) nPosLeft = m_nPosMin; if(nPosLeft > m_nPosMax) nPosLeft = m_nPosMax; m_nPosLeft = nPosLeft; } else if(m_dwExStyle & RXSC_GC_MULTI) { if(nPosLeft < m_nPosMin) nPosLeft = m_nPosMin; if(nPosLeft > m_nPosRight) { m_nPosRight = nPosLeft; if(m_nPosRight > m_nPosMax) nPosLeft = m_nPosRight = m_nPosMax; } m_nPosLeft = nPosLeft; } else if(m_dwExStyle & RXSC_GC_MULTI_EX) { if(nPosLeft < m_nPosMin) nPosLeft = m_nPosMin; if(nPosLeft > m_nPosCenter) { m_nPosCenter = nPosLeft; if(m_nPosCenter > m_nPosRight) { m_nPosRight = m_nPosCenter; if(m_nPosRight > m_nPosMax) nPosLeft = m_nPosCenter = m_nPosRight = m_nPosMax; } } m_nPosLeft = nPosLeft; } else return; if(bRedraw) RedrawWindow();}void RxSliderCtrl::SetRightPos(int nPosRight, BOOL bRedraw){ if(m_dwExStyle & RXSC_GC_MULTI) { if(nPosRight > m_nPosMax) nPosRight = m_nPosMax; if(nPosRight < m_nPosLeft) { m_nPosLeft = nPosRight; if(m_nPosLeft < m_nPosMin) nPosRight = m_nPosLeft = m_nPosMin; } m_nPosRight = nPosRight; } else if(m_dwExStyle & RXSC_GC_MULTI_EX) { if(nPosRight > m_nPosMax) nPosRight = m_nPosMax; if(nPosRight < m_nPosCenter) { m_nPosCenter = nPosRight; if(m_nPosCenter < m_nPosLeft) { m_nPosLeft = m_nPosCenter; if(m_nPosLeft < m_nPosMin) nPosRight = m_nPosLeft = m_nPosCenter = m_nPosMin; } } m_nPosRight = nPosRight; } else return; if(bRedraw) RedrawWindow();}void RxSliderCtrl::SetCenterPos(int nPosCenter, BOOL bRedraw){ if(m_dwExStyle & RXSC_GC_MULTI_EX) { if(nPosCenter < m_nPosLeft) nPosCenter = m_nPosLeft; if(nPosCenter > m_nPosRight) nPosCenter = m_nPosRight; m_nPosCenter = nPosCenter; } else return; if(bRedraw) RedrawWindow();}void RxSliderCtrl::SetPos(int nPosLeft, int nPosRight, BOOL bRedraw){// ASSERT(nPosLeft <= nPosRight); if(m_dwExStyle & RXSC_GC_MULTI) { if(nPosLeft < m_nPosMin) nPosLeft = m_nPosMin; if(nPosLeft > m_nPosMax) nPosLeft = m_nPosMax; m_nPosLeft = nPosLeft; if(nPosRight < nPosLeft) nPosRight = nPosLeft; if(nPosRight > m_nPosMax) nPosRight = m_nPosMax; m_nPosRight = nPosRight; } else if(m_dwExStyle & RXSC_GC_MULTI_EX) { if(nPosLeft < m_nPosMin) nPosLeft = m_nPosMin; if(nPosLeft > m_nPosCenter) m_nPosCenter = nPosLeft; m_nPosLeft = nPosLeft; if(nPosRight > m_nPosMax) nPosRight = m_nPosMax; if(nPosRight < m_nPosCenter) m_nPosCenter = nPosRight; m_nPosRight = nPosRight; } else return; if(bRedraw) RedrawWindow();}void RxSliderCtrl::SetPos(int nPosLeft, int nPosRight, int nPosCenter, BOOL bRedraw){// ASSERT(nPosLeft <= nPosCenter && nPosCenter <= nPosRight); if(m_dwExStyle & RXSC_GC_MULTI_EX) { SetLeftPos(nPosLeft, FALSE); SetRightPos(nPosRight, FALSE); SetCenterPos(nPosCenter, bRedraw); } else return;}UINT RxSliderCtrl::GetSelGripOld(){ return m_nSelGripOld;}int RxSliderCtrl::GetLeftPos(){ return m_nPosLeft;}int RxSliderCtrl::GetCenterPos(){ return m_nPosCenter;}int RxSliderCtrl::GetRightPos(){ return m_nPosRight;}int RxSliderCtrl::GetRangeMin(){ return m_nPosMin;}int RxSliderCtrl::GetRangeMax(){ return m_nPosMax;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -