65.9K
CodeProject 正在变化。 阅读更多。
Home

CShellTreeCtrl

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.87/5 (45投票s)

2000年10月17日

viewsIcon

907704

downloadIcon

11202

一个 CWaitingTreeCtrl 派生类, 用于显示 Shell 资源

CShellTreeCtrl

这只是一个内容提供者类的示例(参见文章),它重写了PopulateItem虚拟函数,仅在用户想要访问时显示Shell的资源。

您可以轻松地指定要用作树控件根项的资源,或者在根级别添加多个项。您可以选择仅显示文件夹、文件、隐藏对象,并且可以自定义项文本的显示方式。您还可以获取与现有项关联的资源的特定信息。

用户界面功能由基类提供,还可以通过自定义动画进一步个性化。

此版本仍在开发中,特别是,目前不支持过滤(欢迎提供想法)。

演示应用程序

演示项目展示了如何

  • 在SDI应用程序中使用控件
  • 向控件添加根项
  • 设置项选项
  • 显示Shell上下文菜单

您可以使用“Test”菜单来试验选定的项,或者在“Shell”菜单中查看Shell上下文菜单。另一种显示Shell上下文菜单的方法是右键单击树项(按住CTRL键可查看级联弹出菜单)。

类参考

CShellTreeCtrl(仍可能更改)

CShellTreeCtrl::AddRootItem

void AddRootItem(LPCITEMIDLIST pidl, UINT nFlags = STCF_DEFAULT)

将指定的Shell对象添加到树的根级别,并设置插入项的选项。

第一个参数pidl是要添加的对象,不能为NULL。您可以使用SHGetSpecialFolderLocation来获取此函数的有效参数。

nFlags参数指定要应用于插入项的选项,可以是以下值的一个或多个,通过按位或运算符组合:

STCF_DEFAULT 子项只能是文件夹,其名称引用父项(类似Explorer)
STCF_INCLUDEFILES 子项也可以是非文件夹对象
STCF_INCLUDEHIDDEN 子项也可以是隐藏对象(如系统文件)
STCF_INCLUDEALL STCF_INCLUDEFILES|STCF_INCLUDEHIDDEN
STCF_SHOWFULLNAME 项的名称不引用任何其他文件夹(如网络邻居文件夹中的共享目录)
STCF_SHOWPATH 项的名称是相对路径
STCF_SHOWFULLPATH 项的名称是绝对路径

STCF_SHOWPATH|STCF_SHOWFULLNAME

CShellTreeCtrl::AddRootFolderContent

void AddRootFolderContent(LPCITEMIDLIST pidl, UINT nFlags = STCF_DEFAULT)

将指定的Shell文件夹对象的内容添加到树的根级别,并设置插入项的选项。

第一个参数pidl是要枚举的文件夹对象。值为NULL表示将添加桌面虚拟文件夹(而不是其内容)。您可以使用SHGetSpecialFolderLocation来获取此函数的有效参数。

nFlags参数指定在枚举过程中应用于文件夹对象的选项(参见上一个函数)。STCF_SHOWxxx标志目前无效。

CShellTreeCtrl::GetItemIDList

CShellPidl GetItemIDList(HTREEITEM hItem)

它检索与指定项关联的Shell对象。如果函数失败,则返回的对象无效。

您可以使用Shell函数来获取有关返回值的更多信息。请参见SHGetPathFromIDListSHGetFileInfo文档。

CShellTreeCtrl::GetItemContextMenu

BOOL GetItemContextMenu(HTREEITEM hItem, CShellContextMenu &rCtxMenu)

它检索与指定项关联的Shell上下文菜单。如果函数成功,则返回值非零。

(待办)

CShellTreeCtrl::GetCallbackMask

UINT GetCallbackMask()

它检索树视图项的哪些部分由回调消息处理。

(参见下一个函数)

CShellTreeCtrl::SetCallbackMask

void SetCallbackMask(UINT nMask)

它指定树视图项的哪些部分由回调消息处理。

nMask参数可以是以下值的一个或多个,通过按位或运算符组合:

TVIF_TEXT 控件在每次需要时都提供项文本
TVIF_IMAGE 图像也一样
TVIF_SELECTEDIMAGE 选中时的图像也一样
TVIF_CHILDREN 项的按钮也一样

更新

  • 2000年10月17日
    • 首次公开发布
  • 2000年2月7日
    • 修复了某些机器上SHGetFileInfo的bug,现在使用IShellFolder::GetAttributesOf(感谢He Yingxia和Markus Axelsson)
    • 现在插入项后可以正确排序
  • 2001年11月23日
    • 控件新版本(Beta版)
    • 添加了Shell对象和接口的包装类
    • 添加了对上下文菜单的支持

结论

请注意,此类尚未完全实现功能。非常感谢任何关于如何改进它的建议。

我还开发这个类是为了给我的CWaitingTreeCtrl类提供一个内容提供者的例子(参见文章)。

许可证

本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。

作者可能使用的许可证列表可以在此处找到。

© . All rights reserved.