How to get the item in a listbox that the mouse is currently over top of.
How to get the item in a listbox that the mouse is currently over top of.
API Declarations
Private Const LB_GETITEMRECT = &H198
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
' You will also need a listbox names List1
Rate How to get the item in a listbox that the mouse is currently over top of.
(1(1 Vote))
Dim i As Integer
' populate the listbox with the indexes for each entry
For i = 0 To 50
List1.AddItem i, i
Next i
End Sub
Private Sub List1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
' select the item the mouse is currently over
List1.ListIndex = GetListItemFromPt(List1, x, y)
End Sub
Public Function GetListItemFromPt(plist As ListBox, x As Single, y As Single) As Integer
Dim rCur As RECT
Dim iIndex As Integer
Dim iPixX As Integer, iPixY As Integer
' convert the coordinates to pixels (remove the next two lines if _
you will be passing the coordinates in pixels)
iPixX = Me.ScaleX(x, vbTwips, vbPixels)
iPixY = Me.ScaleY(y, vbTwips, vbPixels)
' loop through the items of the listbox
For iIndex = 0 To plist.ListCount - 1
' get the coordinates for each item in the listbox in its current _
state, if Top is less than 0 or Bottom is greater than the height of _
the listbox then the item is currently offscreen
SendMessage plist.hwnd, LB_GETITEMRECT, iIndex, rCur
' if passed corrdinates are within the bounds of the current _
item than exit the loop and return the index
If iPixY >= rCur.Top And iPixY <= rCur.Bottom Then
Exit For
End If
Next iIndex
GetListItemFromPt = iIndex
End Function
How to get the item in a listbox that the mouse is currently over top of. Comments
No comments yet — be the first to post one!
Post a Comment