Option Explicit
Private Declare Function SendMessage Lib “user32” Alias “SendMessageA” (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const LB_ITEMFROMPOINT = &H1A9
Private Sub Form_Load()
List1.AddItem “IT狂热者”
List1.AddItem “欢迎访问我的主页https://blog.csdn.net/ty5858”
End Sub
Private Sub List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Call ListToolTip(List1, X, Y, 0)
End Sub
'W:0显示每行内容,1只显示内容长于列表的项内容
Public Sub ListToolTip(L As ListBox, X As Single, Y As Single, W As Long)
Dim lXPoint As Long, lYPoint As Long, lIndex As Long
lXPoint = CLng(X / Screen.TwipsPerPixelX)
lYPoint = CLng(Y / Screen.TwipsPerPixelY)
lIndex = SendMessage(L.hwnd, LB_ITEMFROMPOINT, 0, ByVal ((lYPoint * 65536) + lXPoint))
If lIndex >= 0 And lIndex <= L.ListCount Then
L.ToolTipText = IIf(W <> 0, IIf(TextWidth(L.List(lIndex)) >= L.Width, L.List(lIndex), “”), L.List(lIndex))
Else
L.ToolTipText = “”
End If
End Sub