Public Function ClearItemHit(ByVal MousePosition As Long, ByVal X As Long, ByVal Y As Long) As Boolean
Dim intItem As Integer
With m_MenuItems
For intItem = 1 To .Count
.Item(intItem).HitTest MousePosition, X, Y
Next 'intItem
End With
End Function
Public Function HitTest(ByVal MousePosition As Long, ByVal X As Long, ByVal Y As Long) As Boolean
Dim lngEdge As Long
If MousePosition = MOUSE_DOWN Then
lngEdge = SUNKEN
Else
lngEdge = RAISED
End If
If PtInRect(m_HotSpot, X, Y) Then Call DrawBorder(lngEdge)
End Function
Public Function IsMenuSelected(ByVal X As Long, ByVal Y As Long) As Boolean
IsMenuSelected = Not (PtInRect(m_HotSpot, X, Y) = 0)
If Err.Number Then
IsMenuSelected = False
Err.Clear
End If
End Function
Public Function MenuItem(ByVal Index As Integer) As clsMenuItem
Set MenuItem = m_MenuItems.Item(Index)
End Function
Public Function MenuItemCount() As Integer
MenuItemCount = m_MenuItems.Count
End Function
Public Function MouseProcessForArrows(ByVal MousePosition As Long, ByVal X As Long, ByVal Y As Long) As Integer
Const BUTTON_DOWN As Integer = -1
Const BUTTON_UP As Integer = 1
Const SCROLL_DOWN As Integer = -100
Static lngPrevPosition(1) As Long
Dim clsUpDownArrow As clsArrow
Dim intCount As Integer
Dim lngDirection As Long
For intCount = 0 To 1
If intCount Then
Set clsUpDownArrow = m_ArrowUp
Else
Set clsUpDownArrow = m_ArrowDown
End If
If clsUpDownArrow.HitTest(MousePosition, X, Y) Then
If MousePosition = MOUSE_UP Then
If lngPrevPosition(intCount) = BUTTON_DOWN Then
If intCount Then
lngDirection = SCROLL_UP
Else
lngDirection = SCROLL_DOWN
End If
MouseProcessForArrows = CInt(lngDirection)
End If
lngPrevPosition(intCount) = MousePosition
ElseIf MousePosition = MOUSE_DOWN Then
MouseProcessForArrows = HIT_TYPE_ARROW
lngPrevPosition(intCount) = MousePosition
' MOUSE_CHECK or MOUSE_MOVE
Else
MouseProcessForArrows = HIT_TYPE_ARROW
If lngPrevPosition(intCount) <> BUTTON_DOWN Then lngPrevPosition(intCount) = MousePosition
End If
ElseIf MousePosition = MOUSE_UP Then
lngPrevPosition(intCount) = BUTTON_UP
End If
Next 'intCount
Set clsUpDownArrow = Nothing
End Function
Public Function PaintItems(ByVal FirstIcon As Long, ByVal CurrentMenu As Integer, ByVal ClipHeight As Long, ByVal Max As Integer, ByVal ItemIconSize As Integer, ByVal ItemIconAlignment As AlignmentConstants, ByVal OnlyFullItemsShow As Boolean, ByVal OnlyFullItemsHit As Boolean, ByVal ButtonHideInSingleMenu As Boolean) As Integer
m_MenuItems.ItemsShowed = 0
If m_MenuItems.Paint(m_TopMenuItem, FirstIcon, CurrentMenu, ClipHeight, ItemIconSize, OnlyFullItemsShow, OnlyFullItemsHit, ButtonHideInSingleMenu) Then