探索CIEShell控件的使用与集成

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控件集提供了以下特性:

  • 完整的拖放支持,包括右键按钮和拖放操作。
  • 上下文菜单支持,包括Owner Draw、SendTo以及仅在Windows 2000中可用的OpenWith菜单。
  • 自动从树和列表控件刷新。
  • 使用通配符(如*.cpp、*.htm)或基于文件类型的过滤支持。
  • 使用资源管理器的设置来显示压缩文件的不同颜色,双击打开文件等。
  • 所有三个控件之间的完全集成。

这是第一个版本,因此可能会遇到一些问题。

使用方法

首先,必须在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支持

对于CHtmlView,有有限的支持来显示当点击Internet Explorer文件夹时的网页浏览器,但这在对话框中不起作用。

致谢

这个控件集还包括了一些来自其他来源的文件,特别是Paul DiLascia的CoolMenu、Oz Solomonovich的ShellContextMenu、Zafir Anjum的InPlaceEdit以及其他一些记不清楚来源的代码片段。感谢这些贡献者。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485