C++ 类似Windows资源管理器的文件夹树浏览器

C++ 类似Windows资源管理器的文件夹树浏览器,c++,windows,treeview,wxwidgets,directory,C++,Windows,Treeview,Wxwidgets,Directory,我正在尝试实现一个独立于平台的文件/目录树浏览器。基本上,我尝试复制windows资源管理器的树控件来浏览计算机。但是,我不知道如何找到“桌面”或“我的电脑”文件夹字符串(它在每台电脑和操作系统类型、版本和语言中都会发生变化)。如果我能找到一种方法来获取最顶端的文件夹字符串,那么我就可以向下遍历并填充树。某处有注册表字符串吗 起初,我只针对微软的Windows操作系统(XP、Vista等),但后来我计划也支持Linux和Mac。我在GUI中使用wxWidgets,但对于这个特定问题,我愿意接受所

我正在尝试实现一个独立于平台的文件/目录树浏览器。基本上,我尝试复制windows资源管理器的树控件来浏览计算机。但是,我不知道如何找到“桌面”或“我的电脑”文件夹字符串(它在每台电脑和操作系统类型、版本和语言中都会发生变化)。如果我能找到一种方法来获取最顶端的文件夹字符串,那么我就可以向下遍历并填充树。某处有注册表字符串吗


起初,我只针对微软的Windows操作系统(XP、Vista等),但后来我计划也支持Linux和Mac。我在GUI中使用wxWidgets,但对于这个特定问题,我愿意接受所有建议。我在VS2008中使用C++。

< P>查看函数。

< P>查看函数。

忽略便携性,你需要的是“pIDL”树。PIDL是文件路径的泛化。您可以使用获取特殊文件夹的PIDL。桌面是

CSIDL\u桌面
(不是
CSIDL\u桌面目录
),我的电脑是
CSIDL\u驱动器


要将PIDL转换为名称,请查看一下忽略可移植性,您需要的是“PIDL”树。PIDL是文件路径的泛化。您可以使用获取特殊文件夹的PIDL。桌面是
CSIDL\u桌面
(不是
CSIDL\u桌面目录
),我的电脑是
CSIDL\u驱动器


要将PIDL转换为名称,请看一看

,您可能会在这里绊倒;“我的电脑”和“桌面”是特定于Windows的,不可移植。此外,您不能简单地遍历它们。假设只使用Windows,是否要本地化字符串“Desktop”?或者你想要桌面文件夹的路径吗?MSalters:我在玩了你指出的SH方法后意识到了你所指出的。我只是想要到桌面的路径。但是,最后,我更倾向于在wxWidgets中使用wxGenericDirCtrl,它是可移植的,但只将我的磁盘作为树。。谢谢。你可能会在这里绊倒;“我的电脑”和“桌面”是特定于Windows的,不可移植。此外,您不能简单地遍历它们。假设只使用Windows,是否要本地化字符串“Desktop”?或者你想要桌面文件夹的路径吗?MSalters:我在玩了你指出的SH方法后意识到了你所指出的。我只是想要到桌面的路径。但是,最后,我更倾向于在wxWidgets中使用wxGenericDirCtrl,它是可移植的,但只将我的磁盘作为树。。谢谢