Пишу tree-view control для отображения содержимого файловой системы. Аналог используемого в windows explorer’е.
Беда в том, что скорость раскрытия каталога у моего tree-view control’а и стандартного из explorer’а отличаются на порядок при работе с сетевыми дисками.
Узким местом является получение атрибута SFGAO_HASSUBFOLDER из IShellFolder::GetAttributesOf(). Т.е. если не определять, есть ли у каталога подкаталоги, то со скоростью все нормально, но тогда не удается правильно поставить «крестики для раскрытия».
Сталкивался ли кто-нибудь с чем-либо подобным? Если да, то как выходил из ситуации? Может быть есть другие пути обнаружения подкаталогов?
Здравствуйте, Eugene.Kosmin, Вы писали:
EK>Сталкивался ли кто-нибудь с чем-либо подобным? Если да, то как выходил из ситуации? Может быть есть другие пути обнаружения подкаталогов?
Если посмотришь на Эксплорер — он иногда плюсики ставит сразу, а потом они пропадают... для сетевых дисков, насколько я помню, всегда так...
видимо они сперва показывают все, а потом в фоновом режиме начинают проверять, а надо ли плюсики ставить...
К тому же, если нет расшареных дисков/принтеров — компьютер в списке просто не появится — можешь смело ставить плюсик, если тебя устраивает такая ситуация...
... << RSDN@Home 1.2.0 alpha rev. 789>>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Здравствуйте, Eugene.Kosmin, Вы писали:
[]
EK>Плюсик всегда ставит конечно можно, но как-то некрасиво...
EK>Не помню как в XP’хе, но в Vista explorer в этом плане работает стабильно: папки открывает быстро, плюсики ставит там, где надо. По крайней мере, не похоже, чтобы background’ом атрибуты определялись.
EK>Либо там офигенный алгоритм «предсказания переходов», либо все-таки есть другой способ...
Здесь и про XP, и про Висту.
Q>Здесь и про XP, и про Висту.
Спасибо. Видимо придется background'ом...