如果List控件中的列表文本过长,无法完全显示,如何在鼠标移到列表项上时,出现该项的完整的提示文本?

解决方案 »

  1.   

    Private Sub LstItem_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        On Error GoTo ErrIdx
        LstItem.ToolTipText = LstItem.List(SendMessage(LstItem.hWnd, LB_ITEMFROMPOINT, 0, ByVal MAKELPARAM(X \ Screen.TwipsPerPixelX, Y \ Screen.TwipsPerPixelY)))
        Exit Sub
        
    ErrIdx:
        LstItem.ToolTipText = vbNullString
        
    End Sub
      

  2.   

    Private Function MAKELPARAM(ByVal low As Integer, ByVal high As Integer) As Long
        Dim t As Long
        t = (high And &H7FFF) * &H10000 Or (low And &H7FFF)
        If high And &H8000 Then t = t Or &H80000000
        If low And &H8000 Then t = t Or &H8000
        MAKELPARAM = t
    End Function
      

  3.   

    Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Const LB_ITEMFROMPOINT As Long = &H1A9
      

  4.   

    多谢zyl910的回复!但是我要实现象资源管理器树形结构中那样,当文本过长就出现提示文本覆盖该文本,又如何实现呢?请指教!