Lorsque l'on utilise une listeview avec beaucoup de colonnes et de lignes, il peut être pratique pour l'utilisateur de visualiser dans le tooltiptext le contenu de la cellule qui se trouve sous le curseur.
Public Type POINTAPI
x As Long
y As Long
End Type
Public Type LVHITTESTINFO
pt As POINTAPI
flags As Long
iItem As Long
iSubItem As Long
End Type
Private Sub lstText_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
lstText.ToolTipText = TrouveSubItemText(lstText, x, y)
End Sub
Function TrouveSubItemText(lstListView As ListView, x As Single, y As Single) As String
'
' En fonction de la position de la souris, trouver le text du subtiem
'
Dim HTI As LVHITTESTINFO
Dim lRECT As RECT
On Error Resume Next
If lstListView.HitTest(x, y) Is Nothing Then Exit Function
TrouveSubItemText = lstListView.HitTest(x, y).Text
Err.Clear
With HTI
.pt.x = (x \ Screen.TwipsPerPixelX)
.pt.y = (y \ Screen.TwipsPerPixelY)
.flags = LVHT_ONITEM
End With
Call SendMessage(lstListView.hwnd, LVM_SUBITEMHITTEST, 0, HTI)
If HTI.iSubItem > 0 Then
TrouveSubItemText = lstListView.HitTest(x, y).SubItems(HTI.iSubItem)
End If
End Function