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
Private Const TV_FIRST = &H1100 Private Const TVM_GETNEXTITEM = (TV_FIRST + 10) Private Const TVM_SELECTITEM = (TV_FIRST + 11) Private Const TVGN_CARET = 9 Private Const TVGN_FIRSTVISIBLE = &H5
Function GetTreeViewFirstVisibleNode(ByVal TV As TreeView) As Node Dim hItem As Long Dim selNode As Node Set selNode = TV.SelectedItem hItem = SendMessage(TV.hWnd, TVM_GETNEXTITEM, TVGN_FIRSTVISIBLE, ByVal 0&) SendMessage TV.hWnd, TVM_SELECTITEM, TVGN_CARET, ByVal hItem Set GetTreeViewFirstVisibleNode = TV.SelectedItem Set TV.SelectedItem = selNode End Function |