# Re: How to attach the system image list handle to a tree view control ?

Posted by 吴海文 on September 20, 1999 at 08:57:41:

In Reply to: Re: How to attach the system image list handle to a tree view control ? posted by Sun Jack on September 18, 1999 at 00:48:56:

: : : : 我在VB表单上，放置一个TreeView控制项(名称为treFolder)，在程式中使用如下的叙述取得system imagelist handle。
: : : : himlSmall = SHGetFileInfo("C:\", 0, sfi, Len(sfi), SHGFI_SYSICONINDEX Or SHGFI_SMALLICON)
: : : : 但要如何指定给treFolder.ImageList?

: : : SendMessage hWnd, TVM_SETIMAGELIST, ByVal iImage, ByVal himl

: : 谢谢你的解答，但这个方法我己经试过，仍不能正确运作，在执行加入节点时会出现Run-time error '35613' ImageList must be initialized befor it can be used.
: : 我的程式码如下:

: ....................

:
: 你使用 System ImageList 给 TreeView 使用,在 Nodes.Add 时就不能指定 ImageList 的 icon index,
: 你需要使用 TVITEM struct 来指定 index,你的程式码,
: Set nodX = treFolder.Nodes.Add(, , , sRootName, sfi.iIcon)
: 需改成

: Dim tvi As TVITEM
: tvi.hItem = GetTVItemFromNode(treFolder.hWnd, treFolder.Nodes(1))
: tvi.iImage = sfi.iIcon
: tvi.iSelectedImage = sfi.iIcon
: tvi.mask = TVIF_HANDLE Or TVIF_IMAGE Or TVIF_SELECTEDIMAGE
: tvi.stateMask = TVIS_OVERLAYMASK
: SendMessage treFolder.hWnd, TVM_SETITEM, 0&, tvi

:
: 这边有个奇怪的现像,就是在 Design Time 时,就先放入一个TreeView Control 时,执行上面的程式,并不会把 icon 显示出来,需在Form Load 时,先执行
: me.show
: me.fresh
: 这样,icon 才会显示出来,如果是Run Time 时才建立TreeView Control(使用 CreateWindowEx),则无此现像

Follow Ups: