TvNodeRect




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

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

Private Const TV_FIRST = &H1100
Private Const TVM_GETITEMRECT = (TV_FIRST + 4)

' Return the binding rectangle for the TreeView item whose

' handle is passed in the second argument. If the 3rd argument

' is True it returns the bounding rectangle for the text portion

' of the node, otherwise it returns the bounding rectangle for

' the entire row.

'

' The result rectangle isn't clipped to the TreeView's visibile portion

' Coordinates are relative to the TreeView's client area

'

' You can use this routine to determine the node under the mouse

' cursor, or to precisely move a textbox or a combobox over a given node.


Function GetTreeViewNodeRect(ByVal TV As TreeView, ByVal hItem As Long, _
Optional IncludeTextOnly As Boolean) As RECT
Dim lpRect As RECT
' the function expects in input the handle of the item

' at the beginning of the RECT structure

lpRect.Left = hItem
If SendMessage(TV.hWnd, TVM_GETITEMRECT, IncludeTextOnly, lpRect) Then
' a non-zero value means that the item is visible

GetTreeViewNodeRect = lpRect
End If
End Function












( tvnoderect.html )- by Paolo Puglisi - Modifica del 17/12/2023