Mehrzeiliger ToolTipText in ListView

MAN

Erfahrenes Mitglied
Hallo,

ist es möglich einen mehrzeiligen ToolTipText einem ListItem in einem ListView zuzuweisen? Hört sich kompliziert an, jedoch habe ich das mit dem mehrzeiligen schon irgendwie herausgefunden. Dies braucht aber leider ein hWnd:

Code:
Option Explicit

Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type

Private Type TOOLINFO
  cbSize As Long
  uFlags As Long
  hwnd As Long
  uId As Long
  cRect As RECT
  hinst As Long
  lpszText As String
End Type

Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
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 WM_USER = &H400
Private Const TTM_ADDTOOL = WM_USER + 4
Private Const TTM_SETMAXTIPWIDTH = WM_USER + 24
Private Const TTF_IDISHWND = &H1
Private Const TTF_SUBCLASS = &H10

Private hToolTip As Long

Public Sub InitToolTipText()
   InitCommonControls
   hToolTip = CreateWindowEx(0, "tooltips_class32", "", 0, 0, 0, 0, 0, 0, 0, 0, 0)
   SendMessage hToolTip, TTM_SETMAXTIPWIDTH, 0, 300
End Sub

Public Sub DeleteToolTipText()
   DestroyWindow hToolTip
End Sub

Public Sub SetMultiLineToolTip(ByVal hwnd As Long, ByVal sToolTip As String)
   Dim udtTool As TOOLINFO
   
   udtTool.cbSize = Len(udtTool)
   udtTool.hwnd = hwnd
   udtTool.uFlags = TTF_IDISHWND Or TTF_SUBCLASS
   udtTool.uId = hwnd
   udtTool.lpszText = sToolTip
   
   SendMessage hToolTip, TTM_ADDTOOL, 0, udtTool
End Sub
Ein ListView hat ein hWnd, jedoch nicht ein einzelnes Item (also eine Zeile). Komischerweise kann man aber durch
Code:
ListView1.ListItems.Item(2).ToolTipText = "BlibBlaBlub"
einer Zeile einen ToolTipText geben. Das Problem dabei ist, dass es kein mehrzeiliger ist! :rolleyes:

Also: vielen vielen Dank für eure Mühe - wäre ziemlich wichtig!

mfG

MAN
 
Danke für die Antwort, aber das hate ich natürlich auch ausprobiert (anders könnte man ja sonst keinen mehrzeiligen erhalten.

Doch leider schaut das dann aus wie eine Textbox, die kein Multiline hat:

Zeile1IIZeile2

Trotzdem Dank nochmal für die Antwort, mitlerweile habe ich Umwege gefunden, wie ich so einen Mutliline-ToolTipText erhalte.


mfG

MAN
 
Zurück