iColumnProvider 接口 (shlobj.h)

公开允许在 Windows 资源管理器详细信息视图中添加自定义列的方法。

注意 从 Windows Vista 起,已删除对 IColumnProvider 的支持。 使用 Windows 属性系统来代替它。 有关说明新系统的使用的概念材料,请参阅 Windows 属性 系统。
 

继承

IColumnProvider 接口继承自 IUnknown 接口。 IColumnProvider 还具有以下类型的成员:

方法

IColumnProvider 接口包含以下方法。

 
IColumnProvider::GetColumnInfo

请求有关列的信息。
IColumnProvider::GetItemData

请求指定文件的列数据。
IColumnProvider::Initialize

初始化 IColumnProvider 接口。

注解

Windows 资源管理器详细信息视图通常显示多个标准列。 每列列出当前文件夹中每个文件的信息,如文件大小或类型。 用户还可以选择显示多个列。 当用户右键单击其中一个列标题时,对话框中会显示可用列的列表。 通过创建导出 IColumnProvider 接口的列提供程序对象,你可以向该对话框添加自定义列以供 Windows 资源管理器显示。 例如,包含音乐的文件集合可以使用列提供程序来显示列出艺术家和每个文件包含的片段的列。

列提供程序是每次 Windows 资源管理器显示“详细信息”视图时调用的全局对象。 Windows 资源管理器查询所有已注册的列提供程序的列特征。 如果用户选择了列提供程序的列之一,Windows 资源管理器会查询列提供程序,以获取文件夹中每个文件的关联数据。 然后,它显示所有选定的列。

通常,列提供程序用于显示特定 文件类型的一个或多个自定义列。 当列提供程序收到数据请求时,如果文件是其支持类型的成员,则提供该请求。 否则,它会通过返回S_FALSE来忽略请求。

列由包含 fmtid/pid 对的 SHCOLUMNID 结构标识。 如果可能,请使用现有的 fmtids 和 pids。 如果文件夹包含多个文件类型的文件,则可以将不同类型的数据合并到同一列中。 例如,摘要信息属性集中的 Author pid 可用于多种用途。 如果使用自定义 SHCOLUMNID 结构,则列将仅显示属于受支持类型成员的那些文件的数据。 如果文件夹包含其他文件,则其条目将为空。

当你想要在 Windows 资源管理器详细信息视图中显示一个或多个自定义列时,实现导出此接口的对象。 Windows 资源管理器调用 接口方法以请求显示列所需的信息。 Windows 资源管理器使用的过程如下所示:

  1. 调用 IColumnProvider::Initialize 指定要显示的文件夹。
  2. 调用 IColumnProvider::GetColumnInfo 以检索列的特征。
  3. 如果用户已选择列,请为文件夹中的每个文件调用 IColumnProvider::GetItemData ,以检索属于该文件的列条目中的数据。
除了常规组件对象模型 (COM) 注册外,列提供程序对象还必须注册到 Windows 资源管理器。 为此,请将名为 的子项与对象的 GUID 的字符串形式添加到此键。
HKEY_CLASSES_ROOT
   Folder
      shellex
         ColumnHandlers

此接口由 Windows 资源管理器调用。 它通常不由应用程序使用。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 shlobj.h