Сообщение LB_ITEMFROMPOINT

Const LB_LB_ITEMFROMPOINT = &H1A9

Сообщение LB_ITEMFROMPOINT получает индекс строки списка, ближайшей к заданной точке

Возвращаемое значение

В успешном случае возвращается индекс строки, содержащийся в младшем слове. Старшее слово равно 0

Параметры

wParam
Не используется - установите равным 0
lParam
Переменная, младшее слово которого содержит координату X, а старшее слово содержит координату Y

Пример

' Узнаем индекс строки под курсором
' Поместите на форму список List1 и метку Label1
Private Sub List1_MouseMove(Button As Integer, _
   Shift As Integer, X As Single, Y As Single)
Dim lRet As Long ' индекс строки
' Координаты точки под курсором
Dim lXPos As Long
Dim lYPos As Long

' Конвертируем твипы в пикселы
lXPos = CLng(X / Screen.TwipsPerPixelX)
lYPos = CLng(Y / Screen.TwipsPerPixelY)
' Получаем индекс строки, ближайшей к курсору
lRet = SendMessage(List1.hWnd, LB_ITEMFROMPOINT, 0, ByVal _
   ((lYPos * 65536) + lXPos))
If lRet < List1.ListCount Then
  Label1.Caption = "Текущее значение индекса: " & lRet
' Выводим строку как подсказку. Используйте
' этот способ, если ширина списка слишком мала,
' чтобы вместить длинную строку
  List1.ToolTipText = List1.List(lRet)
End If
End Sub

Категория

Списки