ListBoxItemFromPoint – The index of a ListBox item at given coordinates

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _    hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _    lParam As Any) As LongPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _    Any, dest As Any, ByVal numBytes As Long)Const LB_ITEMFROMPOINT = &H1A9' Return the index of a ListBox item at given coordinates' X and Y are in pixels and relative to the ListBox's upperleft corner' ' This is similar to the HitTest method of the ListView control'' Here an example that shows the index of the item under the cursor'   Private Sub List1_MouseMove(Button As Integer, Shift As Integer,'  '        X As Single, Y As Single)'      Label1 = ListBoxItemFromPoint(List1, '      ScaleX(X, vbTwips, vbPixels),'  ScaleY(Y, vbTwips, vbPixels))'   End SubFunction ListBoxItemFromPoint(lb As ListBox, ByVal X As Long, _    ByVal Y As Long) As Long    Dim lParam As Long    ' lParam must contain X in its low-order word    ' and Y in its high-order word.    ' filling the low-order word is easy    lParam = X    ' We need this method to avoid overflow.    CopyMemory ByVal VarPtr(lParam) + 2, Y, 2    ListBoxItemFromPoint = SendMessage(lb.hwnd, LB_ITEMFROMPOINT, 0, _        ByVal lParam)End Function

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: