【发布时间】:2013-03-04 07:38:39
【问题描述】:
Microsoft 提供了一个类 CMFCShellTreeCtrl 用于浏览 shell 命名空间层次结构(本质上与资源管理器窗口的左侧相同)。
此控件使用SHGetPathFromIDList() 以便从项 ID 列表转到当前路径(选定项)的字符串表示形式。
可以使用任何最终匹配其内部外壳层次结构的字符串设置其当前项目,即使所涉及的对象不在“文件系统上” - 例如。 \\WOLF 将选择 Networking 节点下的机器 WOLF(假设您的 LAN 上有一台名为 WOLF 的机器)。
但是,当您尝试从控件获取这样的路径时,接口会以空白字符串响应,因为它依赖于 SHGetPathFromIDList(),它不会解析不在文件系统上的 shell 项。
有谁知道更好的ImprovedSHGetPathFromIDList() 的实现,它可以与文件系统上不存在的 ITEMIDLIST(例如 \WOLF)一起使用?
我可以为 shell 树控件本身提供我自己版本的 SelectPath() 和 GetItemPath(),实现我自己版本的 ITEMIDLIST 字符串逻辑,以便两者完全对称(即我想要 GetItemPath( ) 以返回先前用于成功 SelectPath() 的相同路径 - 或用于树视图中的任何节点)。
但是,这可以在其他地方使用,作为路径名和 ITEMIDLIST 之间的一般改进的往返(毕竟,UNC 名称是表示字段系统路径的一种相当常见的方式!)
【问题讨论】:
标签: c++ winapi mfc visual-studio-2012 windows-shell