Проводник Windows, как браузер дерева папок

Я пытаюсь реализовать независимый от платформы браузер дерева файлов/каталогов. По сути, я пытаюсь воспроизвести управление деревом проводника Windows для просмотра компьютера. Однако я не могу понять, как найти строку папки «Рабочий стол» или «Мой компьютер» (она меняется для каждого типа ПК и ОС, версии и языка). Если я смогу найти способ получить самую верхнюю строку папки, я смогу пройти вниз и, надеюсь, заполнить дерево. Где-то есть строка реестра?

Первоначально я буду ориентироваться только на операционные системы MS Windows (XP, Vista и т. д.), но позже я планирую также поддерживать Linux и Mac. Я использую wxWidgets для моего графического интерфейса, но я открыт для всех предложений по этой конкретной проблеме. О, и я использую C++ в VS2008.


person mentat    schedule 07.04.2009    source источник
comment
Вы, вероятно, споткнетесь здесь; Мой компьютер и рабочий стол предназначены для Windows и не переносимы. Кроме того, вы не можете тривиально пройти через них.   -  person MSalters    schedule 07.04.2009
comment
Предполагая, что только для Windows, вы хотите локализовать строку «Рабочий стол»? Или вам нужен путь к папке на рабочем столе?   -  person crb    schedule 07.04.2009
comment
MSalters: Я понял, на что вы указали, поиграв с указанными вами методами SH. crb: Мне просто нужен был путь к рабочему столу. Но, наконец, я больше склоняюсь к использованию wxGenericDirCtrl в wxWidgets, который является переносимым, но дает мне только мои диски в виде дерева... спасибо.   -  person mentat    schedule 08.04.2009


Ответы (2)


Игнорируя переносимость, вам нужно дерево "PIDL". PIDL — это обобщение путей к файлам. Вы можете получить PIDL для специальных папок с помощью SHGetFolderLocation. Рабочий стол — CSIDL_DESKTOP (не CSIDL_DESKTOPDIRECTORY), Мой компьютер — CSIDL_DRIVES.

Чтобы преобразовать PIDL в имена, просмотрите SHGetNameFromIDList.

person MSalters    schedule 07.04.2009

Взгляните на функцию SHGetFolderPath.

person Nemanja Trifunovic    schedule 07.04.2009