📄 csliderxp.cls
字号:
PMX = Round(((AL + AR) / 2) + 0.1)
DrawLine AL, AT + (DIF * 2.5), AL, FBM + (DIF * 2.5), m_Hdc, GetLngColor(Col1)
DrawLine AR - 1, AT + 1 + (DIF * 2.5), AR - 1, FBM + (DIF * 2.5), m_Hdc, GetLngColor(Col3)
DrawLine AR - 2, AT + 1 + (DIF * 2.5), AR - 2, FBM + (DIF * 2.5), m_Hdc, GetLngColor(Col4)
DrawLine AR - 3, AT + 1 + (DIF * 2.5), AR - 3, FBM + (DIF * 2.5), m_Hdc, GetLngColor(Col5)
DrawLine AL + 1, AT + (DIF * 10.5), AR - 1, AT + (DIF * 10.5), m_Hdc, GetLngColor(Col1)
DrawLine AL + 1, AT + 1 + (DIF * 9.5), AR - 1, AT + 1 + (DIF * 9.5), m_Hdc, GetLngColor(ICol5)
DrawLine AL + 1, AT + 2 + (DIF * 8.5), AR - 1, AT + 2 + (DIF * 8.5), m_Hdc, GetLngColor(ICol6)
DrawLine AL + 1, AT + 3 + (DIF * 7.5), AR - 1, AT + 3 + (DIF * 7.5), m_Hdc, GetLngColor(ICol7)
DrawLine PMX, AB - 5 - (DIF * 6.5), AR - 1, FBM - 3 - (DIF * 2.5), m_Hdc, GetLngColor(ICol3)
DrawLine PMX, AB - 3 - (DIF * 8.5), AR, FBM - 2 - (DIF * 3.5), m_Hdc, GetLngColor(Col6)
DrawLine PMX, AB - 4 - (DIF * 7.5), AR - 1, FBM - 2 - (DIF * 3.5), m_Hdc, GetLngColor(ICol4)
DrawLine PMX - 1, AB - 5 - (DIF * 6.5), AR - 1, FBM - 4 - (DIF * 1.5), m_Hdc, GetLngColor(Col4)
DrawLine PMX - 1, AB - 6 - (DIF * 5.5), AR - 2, FBM - 4 - (DIF * 1.5), m_Hdc, GetLngColor(Col5)
DrawLine AL, FBM - 1 - (DIF * 4.5), PMX, AB - 1 - (DIF * 10.5), m_Hdc, GetLngColor(Col2)
DrawLine AL + 1, FBM - 2 - (DIF * 3.5), PMX, AB - 3 - (DIF * 8.5), m_Hdc, GetLngColor(ICol2)
DrawLine AL + 1, FBM - 1 - (DIF * 4.5), PMX, AB - 2 - (DIF * 9.5), m_Hdc, GetLngColor(ICol1)
'====================================================================================
'CLEAN THUMB AREA ..CORNERS...
If Dtn = Top_TO_Bottom Then
For i = 0 To ((AR - AL) / 2)
DrawLine AL + i, FBM + i, AL + i, AB, m_Hdc, GetLngColor(vbButtonFace)
DrawLine AR - i - 1, FBM + i, AR - i - 1, AB, m_Hdc, GetLngColor(vbButtonFace)
Next i
SetPixelV m_Hdc, AL, AT, GetLngColor(vbButtonFace)
SetPixelV m_Hdc, AR - 1, AT, GetLngColor(vbButtonFace)
Else
For i = 0 To ((AR - AL) / 2)
DrawLine AL + i, AT, AL + i, AT + Round(((AR - AL) / 2) + 0.1) - i, m_Hdc, GetLngColor(vbButtonFace)
DrawLine AR - i - 1, AT, AR - i - 1, AT + Round(((AR - AL) / 2) + 0.1) - i, m_Hdc, GetLngColor(vbButtonFace)
Next i
SetPixelV m_Hdc, AL, AB - 1, GetLngColor(vbButtonFace)
SetPixelV m_Hdc, AR - 1, AB - 1, GetLngColor(vbButtonFace)
End If
'==================================================================================
Case Left_TO_Right, Right_TO_Left
'=========================================================================================================
'DRAW THE SLIDER.. 'DIF' IS THE FLAG TO ROTATE THE SLIDER LEFTSIDE OR RIGHT DEPENDING ON THE TSL
DIF = IIf(Dtn = Left_TO_Right, 0, 2)
FBM = AR - 1 - ((AB - AT) / 2)
PMX = Round(((AT + AB) / 2) - 0.1)
DrawLine AL + 1 + (DIF * 3), AT, FBM + (DIF * 3) - 1, AT, m_Hdc, GetLngColor(Col1)
DrawLine AL + (DIF * 10.5), AT + 1, AL + (DIF * 10.5), AB - 1, m_Hdc, GetLngColor(Col2)
DrawLine AL + 1 + (DIF * 3), AB - 1, FBM + (DIF * 3) - 1, AB - 1, m_Hdc, GetLngColor(Col3)
DrawLine AL + 1 + (DIF * 3), AB - 2, FBM + (DIF * 3) - 1, AB - 2, m_Hdc, GetLngColor(Col4)
DrawLine AL + 1 + (DIF * 3), AB - 3, FBM + (DIF * 3) - 1, AB - 3, m_Hdc, GetLngColor(Col5)
DrawLine FBM - 1 - (DIF * 4.5), AB - 1, AR - 1 - (DIF * 10.5), PMX - 1, m_Hdc, GetLngColor(Col6)
DrawLine FBM - 1 - (DIF * 4.5), AT, AR - 1 - (DIF * 10.5), PMX + 1, m_Hdc, GetLngColor(Col2)
DrawLine FBM - 2 - (DIF * 3.5), AB - 4, AR - 5 - (DIF * 6.5), PMX - 1, m_Hdc, GetLngColor(Col5)
DrawLine FBM - 2 - (DIF * 3.5), AB - 3, AR - 4 - (DIF * 7.5), PMX - 1, m_Hdc, GetLngColor(Col4)
DrawLine FBM - 1 - (DIF * 4.5), AT + 1, AR - 2 - (DIF * 9.5), PMX + 1, m_Hdc, GetLngColor(ICol1)
DrawLine FBM - 2 - (DIF * 3.5), AT + 1, AR - 3 - (DIF * 8.5), PMX + 1, m_Hdc, GetLngColor(ICol2)
DrawLine FBM - 1 - (DIF * 4.5), AB - 2, AR - 3 - (DIF * 8.5), PMX, m_Hdc, GetLngColor(ICol4)
DrawLine FBM - 2 - (DIF * 3.5), AB - 2, AR - 4 - (DIF * 7.5), PMX, m_Hdc, GetLngColor(ICol3)
DrawLine AL + 1 + (DIF * 8.5), AT + 1, AL + 1 + (DIF * 8.5), AB - 1, m_Hdc, GetLngColor(ICol5)
DrawLine AL + 2 + (DIF * 8.5), AT + 1, AL + 2 + (DIF * 8.5), AB - 1, m_Hdc, GetLngColor(ICol6)
DrawLine AL + 3 + (DIF * 8.5), AT + 1, AL + 3 + (DIF * 8.5), AB - 1, m_Hdc, GetLngColor(ICol7)
'====================================================================================
'CLEAN THUMB AREA ..CORNERS...
If Dtn = Left_TO_Right Then
For i = 0 To ((AB - AT) / 2)
DrawLine FBM + i, AT + i, AR, AT + i, m_Hdc, GetLngColor(vbButtonFace)
DrawLine AR - i, PMX + i - 1, AR, PMX + i - 1, m_Hdc, GetLngColor(vbButtonFace)
Next i
SetPixelV m_Hdc, AL, AT, GetLngColor(vbButtonFace)
SetPixelV m_Hdc, AL, AB - 1, GetLngColor(vbButtonFace)
Else
For i = 0 To ((AB - AT) / 2)
DrawLine AL, AT + i, AL + Round(((AB - AT) / 2) + 0.1) - i, AT + i, m_Hdc, GetLngColor(vbButtonFace)
DrawLine AL, PMX + i - 1, AL + i, PMX + i - 1, m_Hdc, GetLngColor(vbButtonFace)
Next i
SetPixelV m_Hdc, AR - 1, AT, GetLngColor(vbButtonFace)
SetPixelV m_Hdc, AR - 1, AB - 1, GetLngColor(vbButtonFace)
End If
Case Else
'Nothing
End Select
End Sub
'====================================================================================================
'====================================================================================================
' DRAW THE SLIDER BODY 2....
'IN CASE OF NO THICKS
'====================================================================================================
'====================================================================================================
Private Sub DrawSqR()
If m_Ort = 0 Then
DrawLine AL, AT, AL, AB, m_Hdc, GetLngColor(Col1)
DrawLine AR - 1, AT, AR - 1, AB, m_Hdc, GetLngColor(Col3)
DrawLine AR - 2, AT, AR - 2, AB, m_Hdc, GetLngColor(Col4)
DrawLine AR - 3, AT, AR - 3, AB, m_Hdc, GetLngColor(Col5)
DrawLine AL, AB - 1, AR, AB - 1, m_Hdc, GetLngColor(Col6)
DrawLine AL + 1, AT, AR, AT, m_Hdc, GetLngColor(Col1)
DrawLine AL + 1, AB - 2, AR - 1, AB - 2, m_Hdc, GetLngColor(ICol6)
DrawLine AL + 1, AB - 3, AR - 1, AB - 3, m_Hdc, GetLngColor(ICol5)
DrawLine AL + 1, AT + 1, AR - 1, AT + 1, m_Hdc, GetLngColor(ICol5)
DrawLine AL + 1, AT + 2, AR - 1, AT + 2, m_Hdc, GetLngColor(ICol6)
Else
DrawLine AL, AT, AR, AT, m_Hdc, GetLngColor(Col1)
DrawLine AL, AB - 1, AR, AB - 1, m_Hdc, GetLngColor(Col3)
DrawLine AL, AB - 2, AR, AB - 2, m_Hdc, GetLngColor(Col4)
DrawLine AL, AB - 3, AR, AB - 3, m_Hdc, GetLngColor(Col5)
DrawLine AR - 1, AT, AR - 1, AB, m_Hdc, GetLngColor(Col6)
DrawLine AL, AT, AL, AB, m_Hdc, GetLngColor(Col1)
DrawLine AR - 2, AT + 1, AR - 2, AB - 1, m_Hdc, GetLngColor(ICol6)
DrawLine AR - 3, AT + 1, AR - 3, AB - 1, m_Hdc, GetLngColor(ICol5)
DrawLine AL + 1, AT + 1, AL + 1, AB - 1, m_Hdc, GetLngColor(ICol5)
DrawLine AL + 2, AT + 1, AL + 2, AB - 1, m_Hdc, GetLngColor(ICol6)
End If
SetPixelV m_Hdc, AR - 1, AT, GetLngColor(vbButtonFace)
SetPixelV m_Hdc, AL, AT, GetLngColor(vbButtonFace)
SetPixelV m_Hdc, AR - 1, AB - 1, GetLngColor(vbButtonFace)
SetPixelV m_Hdc, AL, AB - 1, GetLngColor(vbButtonFace)
End Sub
'====================================================================================================
'====================================================================================================
' DRAW THE SLIDER CENTER
' WHITE AREA
'====================================================================================================
'====================================================================================================
Private Sub DrawCenter()
Dim hBrush As Long
Dim hRect As RECT
hRect.Left = AL
hRect.Right = AR
hRect.Top = AT
hRect.Bottom = AB
hBrush = CreateSolidBrush(vbWhite)
FillRect m_Hdc, hRect, hBrush
DeleteObject hBrush
End Sub
'====================================================================================================
'====================================================================================================
' DRAW THE SLIDER TICKS
' CHANGE THICKS COLOR FROM BLACK TO XP COLOR (&H92A1A1)
'====================================================================================================
'====================================================================================================
Private Sub DrawTicks()
Dim i As Integer
Dim TicPos As Integer
Dim NumTics As Integer
NumTics = SendMessageLong(m_hWnd, TBM_GETNUMTICS, 0&, 0&)
If NumTics = 0 Then Exit Sub
If m_Ort = 0 Then
'----------------------------------------------------------------------------------------------------------------------------------------------------------------------
For i = 0 To NumTics - 3
TicPos = SendMessageLong(m_hWnd, TBM_GETTICPOS, i, 0&)
If m_Tsl = 0 Or m_Tsl = 2 Then DrawLine TicPos, AB + 1, TicPos, AB + 4, m_Hdc, GetLngColor(&H92A1A1)
If m_Tsl = 1 Or m_Tsl = 2 Then DrawLine TicPos, AT - 4, TicPos, AT - 1, m_Hdc, GetLngColor(&H92A1A1)
Next i
If m_Tsl = 0 Or m_Tsl = 2 Then
DrawLine TL + 5, AB + 1, TL + 5, AB + 5, m_Hdc, GetLngColor(&H92A1A1) 'LEFT LOGICAL
DrawLine TR - 6, AB + 1, TR - 6, AB + 5, m_Hdc, GetLngColor(&H92A1A1) 'RIGHT LOGICAL
End If
If m_Tsl = 1 Or m_Tsl = 2 Then
DrawLine TL + 5, AT - 5, TL + 5, AT - 1, m_Hdc, GetLngColor(&H92A1A1) 'LEFT LOGICAL
DrawLine TR - 6, AT - 5, TR - 6, AT - 1, m_Hdc, GetLngColor(&H92A1A1) 'RIGHT LOGICAL
End If
'----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Else
'----------------------------------------------------------------------------------------------------------------------------------------------------------------------
For i = 0 To NumTics - 3
TicPos = SendMessageLong(m_hWnd, TBM_GETTICPOS, i, 0&)
If m_Tsl = 0 Or m_Tsl = 2 Then DrawLine AR + 1, TicPos, AR + 4, TicPos, m_Hdc, GetLngColor(&H92A1A1)
If m_Tsl = 1 Or m_Tsl = 2 Then DrawLine AL - 4, TicPos, AL - 1, TicPos, m_Hdc, GetLngColor(&H92A1A1)
Next i
If m_Tsl = 0 Or m_Tsl = 2 Then
DrawLine AR + 1, TL + 5, AR + 5, TL + 5, m_Hdc, GetLngColor(&H92A1A1) 'LEFT LOGICAL
DrawLine AR + 1, TR - 6, AR + 5, TR - 6, m_Hdc, GetLngColor(&H92A1A1) 'RIGHT LOGICAL
End If
If m_Tsl = 1 Or m_Tsl = 2 Then
DrawLine AL - 5, TL + 5, AL - 1, TL + 5, m_Hdc, GetLngColor(&H92A1A1) 'LEFT LOGICAL
DrawLine AL - 5, TR - 6, AL - 1, TR - 6, m_Hdc, GetLngColor(&H92A1A1) 'RIGHT LOGICAL
End If
'----------------------------------------------------------------------------------------------------------------------------------------------------------------------
End If
End Sub
Public Property Let hwnd(ByVal cHwnd As Long)
m_hWnd = cHwnd
End Property
Public Property Let hdc(ByVal cHdc As Long)
m_Hdc = cHdc
End Property
Public Property Let Min(ByVal cMin As Integer)
m_Min = cMin
End Property
Public Property Let Max(ByVal cMax As Integer)
m_Max = cMax
End Property
Public Property Let Orientation(ByVal cOrientation As Byte)
m_Ort = cOrientation
End Property
Public Property Let Value(ByVal cValue As Integer)
m_Val = cValue
End Property
Public Property Let TickStyle(ByVal cTickStyle As Byte)
m_Tsl = cTickStyle
End Property
Public Property Let State(ByVal cState As ControlState)
m_Stt = cState
End Property
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -