📄 ccontrolflatter.cls
字号:
Case WM_MOUSEMOVE
If Not m_bMouseOver Then
m_bMouseOver = True
DrawMe
SetTimer m_hWnd, 1, 10, 0
End If
Case WM_LBUTTONDOWN
m_bMouseDown = True
DrawMe
Case WM_LBUTTONUP
m_bMouseDown = False
DrawMe
Case WM_TIMER
OnTimer True
End Select
End Function
Private Sub DrawMe()
Dim dwStyle As EDrawStyle
Select Case m_cType
Case CT_GENERAL
If m_bDisabled Then
dwStyle = FC_DRAWDISABLED
ElseIf m_bFocus Or m_bMouseOver Then
dwStyle = FC_DRAWRAISED
Else
dwStyle = FC_DRAWNORMAL
End If
DrawEdit dwStyle
Case CT_COMBOBOX
If m_bDisabled Then
dwStyle = FC_DRAWDISABLED
ElseIf SendMessageLong(m_hWnd, CB_GETDROPPEDSTATE, 0, 0) <> 0 Then
dwStyle = FC_DRAWPRESSED
ElseIf m_bFocus Or m_bMouseOver Then
dwStyle = FC_DRAWRAISED
Else
dwStyle = FC_DRAWNORMAL
End If
DrawCombo dwStyle
Case CT_COMMANDBUTTON
If m_bDisabled Then
dwStyle = FC_DRAWDISABLED
ElseIf m_bMouseDown Then
dwStyle = FC_DRAWPRESSED
ElseIf m_bMouseOver Then
dwStyle = FC_DRAWRAISED
Else
dwStyle = FC_DRAWNORMAL
End If
DrawCommand dwStyle
Case CT_SCROLLBAR
If m_bFocus Or m_bMouseOver Then
DrawScrollBar FC_DRAWRAISED
Else
DrawScrollBar FC_DRAWNORMAL
End If
End Select
End Sub
Private Sub DrawCommand(ByVal dwStyle As EDrawStyle)
Dim rcItem As RECT
Dim pDC As Long
GetClientRect m_hWnd, rcItem
pDC = GetDC(m_hWnd)
Select Case dwStyle
Case FC_DRAWNORMAL, FC_DRAWDISABLED
Draw3DRect pDC, rcItem, vbButtonFace, vbButtonFace
Case FC_DRAWRAISED
Draw3DRect pDC, rcItem, vb3DHighlight, vbButtonShadow
Case FC_DRAWPRESSED
Draw3DRect pDC, rcItem, vbButtonShadow, vb3DHighlight
End Select
InflateRect rcItem, -1, -1
Draw3DRect pDC, rcItem, vbButtonFace, vbButtonFace
InflateRect rcItem, -1, -1
Draw3DRect pDC, rcItem, vbButtonFace, vbButtonFace
DeleteDC pDC
End Sub
Private Sub DrawEdit(ByVal dwStyle As EDrawStyle)
Dim rcItem As RECT
Dim pDC As Long
Dim PT As POINTAPI
GetWindowRect m_hWnd, rcItem
PT.x = rcItem.Left
PT.y = rcItem.Top
ScreenToClient m_hWndParent, PT
rcItem.Left = PT.x
rcItem.Top = PT.y
PT.x = rcItem.Right
PT.y = rcItem.Bottom
ScreenToClient m_hWndParent, PT
rcItem.Right = PT.x
rcItem.Bottom = PT.y
pDC = GetDC(m_hWndParent)
Select Case dwStyle
Case FC_DRAWDISABLED
InflateRect rcItem, 1, 1
Draw3DRect pDC, rcItem, vb3DHighlight, vb3DHighlight
Case FC_DRAWNORMAL
InflateRect rcItem, 2, 2
Draw3DRect pDC, rcItem, vbButtonFace, vbButtonFace
Case FC_DRAWRAISED
InflateRect rcItem, 2, 2
Draw3DRect pDC, rcItem, vbButtonShadow, vb3DHighlight
End Select
DeleteDC pDC
End Sub
Private Sub DrawCombo(ByVal dwStyle As EDrawStyle)
Dim rcItem As RECT
Dim pDC As Long
GetClientRect m_hWnd, rcItem
pDC = GetDC(m_hWnd)
Select Case dwStyle
Case FC_DRAWDISABLED
Draw3DRect pDC, rcItem, vbButtonFace, vbButtonFace
InflateRect rcItem, -1, -1
Draw3DRect pDC, rcItem, vb3DHighlight, vb3DHighlight
Case FC_DRAWNORMAL
Draw3DRect pDC, rcItem, vbButtonFace, vbButtonFace
InflateRect rcItem, -1, -1
Draw3DRect pDC, rcItem, vbButtonFace, vbButtonFace
Case Else
Draw3DRect pDC, rcItem, vbButtonShadow, vb3DHighlight
InflateRect rcItem, -1, -1
Draw3DRect pDC, rcItem, vbButtonFace, vbButtonFace
End Select
InflateRect rcItem, -1, -1
rcItem.Left = rcItem.Right - GetSystemMetrics(SM_CXHTHUMB)
Draw3DRect pDC, rcItem, vbButtonFace, vbButtonFace
InflateRect rcItem, -1, -1
Draw3DRect pDC, rcItem, vbButtonFace, vbButtonFace
Select Case dwStyle
Case FC_DRAWNORMAL
rcItem.Top = rcItem.Top - 1
rcItem.Bottom = rcItem.Bottom + 1
Draw3DRect pDC, rcItem, vb3DHighlight, vb3DHighlight
rcItem.Left = rcItem.Left - 1
rcItem.Right = rcItem.Left
Draw3DRect pDC, rcItem, vbWindowBackground, &H0
Case FC_DRAWRAISED
rcItem.Top = rcItem.Top - 1
rcItem.Bottom = rcItem.Bottom + 1
rcItem.Right = rcItem.Right + 1
Draw3DRect pDC, rcItem, vb3DHighlight, vbButtonShadow
Case FC_DRAWPRESSED
rcItem.Left = rcItem.Left - 1
rcItem.Top = rcItem.Top - 2
OffsetRect rcItem, 1, 1
Draw3DRect pDC, rcItem, vbButtonShadow, vb3DHighlight
End Select
DeleteDC pDC
End Sub
Private Sub DrawScrollBar(ByVal dwStyle As EDrawStyle)
Dim rcItem As RECT, rcItemA As RECT, rcItemB As RECT
Dim pDC As Long
Dim lButtonSize As Long
GetClientRect m_hWnd, rcItem
pDC = GetDC(m_hWnd)
Select Case dwStyle
Case FC_DRAWNORMAL
Draw3DRect pDC, rcItem, vbButtonFace, vbButtonFace
InflateRect rcItem, -1, -1
Draw3DRect pDC, rcItem, vb3DHighlight, vb3DHighlight
InflateRect rcItem, -1, -1
Case FC_DRAWRAISED
Draw3DRect pDC, rcItem, vbButtonShadow, vb3DHighlight
InflateRect rcItem, -1, -1
Draw3DRect pDC, rcItem, vbButtonFace, vbButtonFace
End Select
CopyRect rcItemA, rcItem
CopyRect rcItemB, rcItem
lButtonSize = GetSystemMetrics(SM_CXHSCROLL)
Select Case dwStyle
Case FC_DRAWNORMAL
rcItemA.Right = lButtonSize
rcItemB.Left = rcItemB.Right - lButtonSize + 2
Draw3DRect pDC, rcItemA, vbButtonFace, vbButtonFace
InflateRect rcItemA, -1, -1
Draw3DRect pDC, rcItemA, vbButtonFace, vbButtonFace
Draw3DRect pDC, rcItemB, vbButtonFace, vbButtonFace
InflateRect rcItemB, -1, -1
Draw3DRect pDC, rcItemB, vbButtonFace, vbButtonFace
Case FC_DRAWRAISED
rcItemA.Right = lButtonSize
rcItemB.Left = rcItemB.Right - lButtonSize + 1
Draw3DRect pDC, rcItemA, vbButtonFace, vbButtonFace
InflateRect rcItemA, -1, -1
Draw3DRect pDC, rcItemA, vb3DHighlight, vbButtonShadow
Draw3DRect pDC, rcItemB, vbButtonFace, vbButtonFace
InflateRect rcItemB, -1, -1
Draw3DRect pDC, rcItemB, vb3DHighlight, vbButtonShadow
Case FC_DRAWPRESSED
End Select
DeleteDC pDC
End Sub
Private Function Draw3DRect( _
ByVal hdc As Long, _
ByRef rcItem As RECT, _
ByVal oTopLeftColor As OLE_COLOR, _
ByVal oBottomRightColor As OLE_COLOR)
Dim hPen As Long
Dim hPenOld As Long
Dim tP As POINTAPI
hPen = CreatePen(PS_SOLID, 1, TranslateColor(oTopLeftColor))
hPenOld = SelectObject(hdc, hPen)
MoveToEx hdc, rcItem.Left, rcItem.Bottom - 1, tP
LineTo hdc, rcItem.Left, rcItem.Top
LineTo hdc, rcItem.Right - 1, rcItem.Top
SelectObject hdc, hPenOld
DeleteObject hPen
If (rcItem.Left <> rcItem.Right) Then
hPen = CreatePen(PS_SOLID, 1, TranslateColor(oBottomRightColor))
hPenOld = SelectObject(hdc, hPen)
LineTo hdc, rcItem.Right - 1, rcItem.Bottom - 1
LineTo hdc, rcItem.Left, rcItem.Bottom - 1
SelectObject hdc, hPenOld
DeleteObject hPen
End If
End Function
Private Function TranslateColor(ByVal clr As OLE_COLOR, Optional hPal As Long = 0) As Long
If OleTranslateColor(clr, hPal, TranslateColor) Then
TranslateColor = -1
End If
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -