I'm not handy in C/C++, otherwise I'd consider volunteering to work on this myself. Maybe someone else can have a look? It's possible the TreeView code is too deeply embedded to make it easy to pull this off, but I'll propose it in any case.
I've done this in the past with my FoxPro code and it's worked pretty well.
When Explorer View's TreeView loads a node, the node's expand event can be modified slightly to include a load all of its grandchildren. This way a node's expansion control (the plus/minus symbol) will always immediately indicate whether or not it has children, even before we expand it.
Currently the model is that we have to select a node in order to determine whether it has children. This makes navigating the heirarchy a guessing game, which can become frustrating at times.
Some example psuedo code:
BeginEvent NodeExpand(ThisNode) ForEach ChildNode In ThisNode.Children If ChildNode.HasChildren = False ChildNode.LoadChildren() EndIf EndFor EndEvent
Would such a change be possible to implement?