Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: VB4/32,VB5,VB6
Expertise: Intermediate
Sep 18, 1999



Building the Right Environment to Support AI, Machine Learning and Deep Learning

GetTreeViewNodeRect - The bounding rectangle of a TreeView's node

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

    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
Francesco Balena
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date