我想问下怎么获取treeview子节点句柄(急)
我想问下怎么获取treeview子节点句柄 抄来的,原作者是Francesco BalenaPrivate 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 TVM_GETNEXTITEM = &H110A
Private Const TVGN_CARET = 9
' The handle of any node in a TreeView
'
' While VB developers reason in terms of Node objects, TreeView
' nodes are stored and referenced internally using 32-bit handles,
' and when you want to pass a reference to a Node in a API call you
' must pass the handle to it. The problem is that there is no easy
' way to get an arbitrary node's handle, and you can only get
' (or set) the handle of the selected node and a few others.
'
' However, we can get this information if we cheat a little,
' by temporarily selecting the node and then restoring the original
' selected node. This is very fast and the user won't notice any flickering.
Function GetTreeViewNodeHandle(ByVal TV As TreeView, Node As Node) As Long
Dim selNode As Node
' remember the node currently selected
Set selNode = TV.SelectedItem
' select the new node
Set TV.SelectedItem = Node
' send a message to retrieve the handle of current node
GetTreeViewNodeHandle = SendMessage(TV.hWnd, TVM_GETNEXTITEM, TVGN_CARET, _
ByVal 0&)
' restore the node that was selected
Set TV.SelectedItem = selNode
End Function
Francesco Balena
不管是不是抄来的,这是正解! 这个我知道,用这样的方法我可以得到根节点,但是字节点获取不到在vb6.0当中。
有了根节点,那就好办,使用FindWindowEx 来查找
补充:VB , API