CShellTreeCtrl






4.87/5 (45投票s)
2000年10月17日

907704

11202
一个 CWaitingTreeCtrl 派生类,
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 | 项的名称是绝对路径 ( |
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
函数来获取有关返回值的更多信息。请参见SHGetPathFromIDList
、SHGetFileInfo
文档。
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
类提供一个内容提供者的例子(参见文章)。
许可证
本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。
作者可能使用的许可证列表可以在此处找到。