Option ExplicitPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Const LB_ITEMFROMPOINT = &H1A9Private Sub Form_Load() With List1 .AddItem "陈锐 [email protected]" .AddItem "陈锐 [email protected]" .AddItem "陈锐 [email protected]" End With End SubPrivate Sub List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim lXPoint As Long Dim lYPoint As Long Dim lIndex As Long If Button = 0 Then ' 如果没有按钮被按下 lXPoint = CLng(X / Screen.TwipsPerPixelX) lYPoint = CLng(Y / Screen.TwipsPerPixelY) With List1 ' 获得当前的光标所在的的屏幕位置确定标题位置 lIndex = SendMessage(.hwnd, LB_ITEMFROMPOINT, 0, _ ByVal ((lYPoint * 65536) + lXPoint)) ' 显示提示行或清除提示行 If (lIndex >= 0) And (lIndex <= .ListCount) Then .ToolTipText = .List(lIndex) Else .ToolTipText = "" End If End With End If End Sub
Private Const LB_ITEMFROMPOINT = &H1A9Private Sub Form_Load()
With List1
.AddItem "陈锐 [email protected]"
.AddItem "陈锐 [email protected]"
.AddItem "陈锐 [email protected]"
End With
End SubPrivate Sub List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lXPoint As Long
Dim lYPoint As Long
Dim lIndex As Long
If Button = 0 Then ' 如果没有按钮被按下
lXPoint = CLng(X / Screen.TwipsPerPixelX)
lYPoint = CLng(Y / Screen.TwipsPerPixelY)
With List1
' 获得当前的光标所在的的屏幕位置确定标题位置
lIndex = SendMessage(.hwnd, LB_ITEMFROMPOINT, 0, _
ByVal ((lYPoint * 65536) + lXPoint))
' 显示提示行或清除提示行
If (lIndex >= 0) And (lIndex <= .ListCount) Then
.ToolTipText = .List(lIndex)
Else
.ToolTipText = ""
End If
End With
End If
End Sub
然后设置listview的热跟踪属性为选中
利用mousemove里面的x,y参数,再用listview1的hittest方法得到是哪个item,然后再作操作