【问】VB TreeView如何根据Node节点句柄返回其对应的Index?
VBAHZ 2007-04-01 03:53:03 此控件是由VB封装的(比较烂:)
比如说:pItRoot = SendMessage(m_hWnd, TVM_GetNextItem, TVGN_Root, ByVal 0)
这样得到了根节点的句柄,但它并不一定对应TreeView1.Nodes(1)
现在问题就是,如何根据节点句柄,来返回其Index?
(主要是偶不知道VB是如何维护Node数据的,不知道节点Index放在哪里,偶估计它可能不是动态检索得出的索引,而是由链表什么的组成???)
(PS:考虑到通用封装性,代码中并没有TreeView的实体对象,
也就是无法使用TreeView1.Nodes(N)的办法,来引用到实体对象,
这样就可以处理其它进程中的TreeView对象了,
现只知道该控件句柄,和正在处理的节点句柄,只需要返回其Index就可)
==========================================
特别申明了,代码中没有对象实体的。
就是说不会出现 As Nodes As TreeView 类型的。
想要用VB直接返回Node对象,恐怕不行。
也许该直接接管更底层的索引链表?
(主要是从效率方面考虑,如果Nodes的数量很大,
而我们仅仅需要一个索引号,这样时间白白浪费在了VB的不断创建与撤销Node对象上了,
况且,有时还要跨进程取索引,直接使用对象实体的话,恐怕。。。)
==========================================
现在没有对象实体啊,没有引用MSComctlLib库
这段代码的作用仅仅是根据输入的控件句柄和节点句柄返回其Index
在其内部,应该不会出现Set语句(因为没有实体对象)
偶不知道其Index值到底存在哪里,否则的话,只要直接找到偏移地址,取出就行。