CIEShell控件集是一组用于MFC应用程序的高级控件,它们可以独立使用,也可以集成在一起,类似于资源管理器。这些控件包括CIEShellTreeCtrl、CIEShellListCtrl和CIEShellComboBox。它们具有丰富的特性,比如完整的拖放支持、上下文菜单支持、自动刷新、过滤支持等。
这些控件使用起来非常简单,首先需要在项目中包含SeaShellExt.h头文件,并确保所有SeaShellExt子文件夹中的文件都被包含进来,除非打算仅在对话框中使用它们。
为了在对话框中添加这些控件,需要在OnInitDialog函数中添加以下代码:
// 将组合框指向树控件(可选)
m_cbShell.SetTreeCtrlWnd(m_tcShell.GetSafeHwnd());
// 将树控件指向列表控件(可选)
m_tcShell.SetListCtrlWnd(m_lcShell.GetSafeHwnd());
// 将树控件指向组合框(可选)
m_tcShell.SetComboBoxWnd(m_cbShell.GetSafeHwnd());
// 从桌面开始填充树
m_tcShell.LoadFolderItems();
// 或者从系统文件路径开始填充树
m_tcShell.LoadFolderItems(_T("C:\\folder1\\folder2"));
如果想在CView中连接这些控件,可以查看附带的示例,它包含了CIEShellTreeView和CIEShellListView类。
关于框展示了一个没有Shell支持的列表控件示例,它在一列中添加了一个进度条,类似于Napster的风格。感谢Chris Maunder提供的CTextProgressCtrl,对其进行了轻微的修改。
对于CHtmlView,有有限的支持来显示当点击Internet Explorer文件夹时的网页浏览器,但这在对话框中不起作用。
此外,这个控件集还包括了一些来自其他来源的文件,特别是Paul DiLascia的CoolMenu、Oz Solomonovich的ShellContextMenu、Zafir Anjum的InPlaceEdit以及其他一些记不清楚来源的代码片段。感谢这些贡献者。
如果想要将其转换为MFC扩展DLL,大多数类中使用的宏CTRL_EXT_CLASS将会有所帮助。
最后,使用W2K平台SDK进行了编译,但包含了一个W2KFix.h文件,它定义了它所需要的COM接口。
CIEShell控件集提供了以下特性:
这是第一个版本,因此可能会遇到一些问题。
首先,必须在stdafx.h文件中包含SeaShellExt.h,并且需要包含SeaShellExt子文件夹中的所有文件,除非打算仅在对话框中使用它。
示例展示了如何在框架窗口和对话框中使用它。以下是需要做的,以将所有控件添加到对话框中:
// 将组合框指向树控件(可选)
m_cbShell.SetTreeCtrlWnd(m_tcShell.GetSafeHwnd());
// 将树控件指向列表控件(可选)
m_tcShell.SetListCtrlWnd(m_lcShell.GetSafeHwnd());
// 将树控件指向组合框(可选)
m_tcShell.SetComboBoxWnd(m_cbShell.GetSafeHwnd());
// 从桌面开始填充树
m_tcShell.LoadFolderItems();
// 或者从系统文件路径开始填充树
m_tcShell.LoadFolderItems(_T("C:\\folder1\\folder2"));
要在CView中连接这些控件,请查看示例,它附带了CIEShellTreeView和CIEShellListView类。
关于框有一个示例,展示了没有Shell支持的列表控件,它在一列中添加了一个进度条,类似于Napster的风格。
感谢Chris Maunder提供的CTextProgressCtrl,对其进行了轻微的修改。
对于CHtmlView,有有限的支持来显示当点击Internet Explorer文件夹时的网页浏览器,但这在对话框中不起作用。
这个控件集还包括了一些来自其他来源的文件,特别是Paul DiLascia的CoolMenu、Oz Solomonovich的ShellContextMenu、Zafir Anjum的InPlaceEdit以及其他一些记不清楚来源的代码片段。感谢这些贡献者。