gpt4 book ai didi

c++ - 有没有比 SHGetPathFromIDList() 更好的方法将 itemidlist 转换为路径字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:11:32 24 4
gpt4 key购买 nike

Microsoft 提供了一个类 CMFCShellTreeCtrl 用于浏览 shell 命名空间层次结构(本质上与资源管理器窗口的左侧相同)。

此控件使用 SHGetPathFromIDList() 以从项目 ID 列表转到当前路径(所选项目)的字符串表示形式。

可以使用任何最终匹配其内部 shell 层次结构的字符串来设置其当前项,即使所涉及的对象不在“文件系统上”——例如\\WOLF 将选择 Networking 节点下的机器 WOLF(假设您的局域网中有一台名为 WOLF 的机器)。

但是,当您尝试从控件返回这样的路径时,由于它依赖于 SHGetPathFromIDList() 不会解析非在文件系统上。

有谁知道更好的 ImprovedSHGetPathFromIDList() 的实现,它适用于不在文件系统(例如\WOLF)上的 ITEMIDLIST?


我可以为 shell 树控件本身提供我自己的 SelectPath()GetItemPath() 版本,实现我自己的 ITEMIDLIST <-> 字符串逻辑版本以便两者完全对称(即我希望 GetItemPath() 返回与之前成功用于 SelectPath() 或 TreeView 中的任何节点的相同路径)。

但是,这可以在其他地方使用,作为路径名和 ITEMIDLIST 之间的通用改进往返(毕竟,UNC 名称是表达文件系统路径的一种相当普遍的方式!)

最佳答案

据我所知,没有针对非文件系统项目的预制函数。您必须在每个项目上使用 IShellFolder::GetDisplayNameOf() 遍历 ITEMIDLIST,指定 SIGDN_PARENTRELATIVEPARSINGSIGDN_DESKTOABSOLUTEPARSING 标志,手动构建路径字符串。

关于c++ - 有没有比 SHGetPathFromIDList() 更好的方法将 itemidlist 转换为路径字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15434963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com