【问题标题】:Windows Explorer like folder tree browser类似文件夹树浏览器的 Windows 资源管理器
【发布时间】:2009-04-07 14:28:08
【问题描述】:

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

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

【问题讨论】:

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

标签: c++ windows treeview wxwidgets directory


【解决方案1】:

忽略可移植性,您需要的是“PIDL”树。 PIDL 是文件路径的概括。您可以使用SHGetFolderLocation 获取特殊文件夹的 PIDL。桌面是CSIDL_DESKTOP不是CSIDL_DESKTOPDIRECTORY),我的电脑是CSIDL_DRIVES

要将 PIDL 转换为名称,请查看 SHGetNameFromIDList

【讨论】:

    【解决方案2】:

    看看SHGetFolderPath函数。

    【讨论】:

      猜你喜欢
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多