CMFCShellListCtrl 类

CMFCShellListCtrl 类提供 Windows 列表控件功能,并通过包含显示 Shell 项列表的功能进行扩展。

语法

class CMFCShellListCtrl : public CMFCListCtrl

成员

公共方法

名称 描述
CMFCShellListCtrl::DisplayFolder 显示包含在提供的文件夹中的项列表。
CMFCShellListCtrl::DisplayParentFolder 显示包含在当前所显示的文件夹的父文件夹中的项列表。
CMFCShellListCtrl::EnableShellContextMenu 启用或禁用快捷菜单。
CMFCShellListCtrl::GetCurrentFolder 检索当前文件夹的路径。
CMFCShellListCtrl::GetCurrentFolderName 检索当前文件夹的名称。
CMFCShellListCtrl::GetCurrentItemIdList 返回当前列表控件项的 PIDL。
CMFCShellListCtrl::GetCurrentShellFolder 返回指向当前 Shell 文件夹的指针。
CMFCShellListCtrl::GetItemPath 返回项的文本路径。
CMFCShellListCtrl::GetItemTypes 返回列表控件显示的 Shell 项类型。
CMFCShellListCtrl::IsDesktop 检查当前所选文件夹是否为桌面文件夹。
CMFCShellListCtrl::OnCompareItems 框架在比较两个项时调用此方法。 (重写 CMFCListCtrl::OnCompareItems。)
CMFCShellListCtrl::OnFormatFileDate 当框架检索列表控件显示的文件日期时调用。
CMFCShellListCtrl::OnFormatFileSize 当框架转换列表控件的文件大小时调用。
CMFCShellListCtrl::OnGetItemIcon 当框架检索列表控件项的图标时调用。
CMFCShellListCtrl::OnGetItemText 当框架转换列表控件项的文本时调用。
CMFCShellListCtrl::OnSetColumns 当框架在设置列名时调用。
CMFCShellListCtrl::Refresh 刷新并重绘列表控件。
CMFCShellListCtrl::SetItemTypes 设置列表控件显示的项的类型。

注解

CMFCShellListCtrl 类扩展了 CMFCListCtrl 类的功能,它使程序能够列出 Windows shell 项。 使用的显示格式类似于资源管理器窗口的列表视图的格式。

CMFCShellTreeCtrl 对象可与 CMFCShellListCtrl 对象相关联,以创建完整的资源管理器窗口。 然后,在 CMFCShellTreeCtrl 中选择一个项会导致 CMFCShellListCtrl 对象列出所选项的内容。

示例

以下示例演示如何创建 CMFCShellListCtrl 类的对象,以及如何显示当前所显示的文件夹的父文件夹。 此代码片段是 Explorer 示例的一部分。

CMFCShellListCtrl m_wndList;
CRect rectDummy(0, 0, 0, 0);
// The this pointer points to CExplorerView class which extends the CView class.
m_wndList.Create(WS_CHILD | WS_VISIBLE | LVS_REPORT, rectDummy, this, 1);
m_wndList.DisplayParentFolder();

继承层次结构

CObject

CCmdTarget

CWnd

CListCtrl

CMFCListCtrl

CMFCShellListCtrl

要求

标头:afxshelllistCtrl.h

CMFCShellListCtrl::DisplayFolder

显示包含在提供的文件夹中的项列表。

virtual HRESULT DisplayFolder(LPCTSTR lpszPath);
virtual HRESULT DisplayFolder(LPAFX_SHELLITEMINFO lpItemInfo);

参数

lpszPath
[in] 包含文件夹路径的字符串。

lpItemInfo
[in] 指向 LPAFX_SHELLITEMINFO 结构的指针,该结构描述要显示的文件夹。

返回值

如果成功,则返回 S_OK;否则返回 E_FAIL。

CMFCShellListCtrl::DisplayParentFolder

更新 CMFCShellListCtrl 对象以显示当前所显示的文件夹的父文件夹。

virtual HRESULT DisplayParentFolder();

返回值

如果成功,则返回 S_OK;否则返回 E_FAIL。

CMFCShellListCtrl::EnableShellContextMenu

启用快捷菜单。

void EnableShellContextMenu(BOOL bEnable = TRUE);

参数

bEnable
[in] 一个布尔值,指定框架是否启用快捷菜单。

CMFCShellListCtrl::GetCurrentFolder

检索 CMFCShellListCtrl 对象中当前所选文件夹的路径。

BOOL GetCurrentFolder(CString& strPath) const;

参数

strPath
[out] 对方法在其中写入路径的字符串参数的引用。

返回值

如果成功,则为非零值;否则为 0。

备注

如果未在 CMFCShellListCtrl 中选择文件夹,则此方法会失败。

CMFCShellListCtrl::GetCurrentFolderName

检索 CMFCShellListCtrl 对象中当前所选文件夹的名称。

BOOL GetCurrentFolderName(CString& strName) const;

参数

strName
[out] 对方法在其中写入名称的字符串参数的引用。

返回值

如果成功,则为非零值;否则为 0。

注解

如果未在 CMFCShellListCtrl 中选择文件夹,则此方法会失败。

CMFCShellListCtrl::GetCurrentItemIdList

返回当前所选项的 PIDL。

LPITEMIDLIST GetCurrentItemIdList() const;

返回值

当前项的 PIDL。

CMFCShellListCtrl::GetCurrentShellFolder

获取指向 CMFCShellListCtrl 对象中当前所选项的指针。

const IShellFolder* GetCurrentShellFolder() const;

返回值

指向所选对象的 IShellFolder 接口的指针。

备注

如果当前未选择对象,则此方法返回 NULL。

CMFCShellListCtrl::GetItemPath

检索项的路径。

BOOL GetItemPath(
    CString& strPath,
    int iItem) const;

参数

strPath
[out] 对接收路径的字符串的引用。

iItem
[in] 列表项的索引。

返回值

如果成功,则为 TRUE;否则为 FALSE。

备注

iItem 提供的索引基于 CMFCShellListCtrl 类对象当前显示的项

CMFCShellListCtrl::GetItemTypes

返回 CMFCShellListCtrl 对象显示的项的类型。

SHCONTF GetItemTypes() const;

返回值

一个 SHCONTF 值,其中包含 CMFCShellListCtrl 中列出的项的类型。

注解

若要设置 CMFCShellListCtrl 中列出的项的类型,请调用 CMFCShellListCtrl::SetItemTypes

CMFCShellListCtrl::IsDesktop

确定 CMFCShellListCtrl 对象中显示的文件夹是否为桌面文件夹。

BOOL IsDesktop() const;

返回值

如果显示的文件夹是桌面文件夹,则返回 TRUE;否则返回 FALSE。

CMFCShellListCtrl::OnCompareItems

有关详细信息,请参阅所安装的 Visual Studio 的 C\atlmfc\src\mfc 文件夹中的源代码。

virtual int OnCompareItems(
    LPARAM lParam1,
    LPARAM lParam2,
    int iColumn);

参数

[in] lParam1
[in] lParam2
[in] iColumn

返回值

备注

CMFCShellListCtrl::OnFormatFileDate

必须将与对象关联的日期转换为字符串时,框架会调用此方法。

virtual void OnFormatFileDate(
    const CTime& tmFile,
    CString& str);

参数

tmFile
[in] 与文件关联的日期。

str
[out] 包含带格式文件日期的字符串。

注解

CMFCShellListCtrl 类对象显示与文件关联的日期时,它必须将该日期转换为字符串格式。 CMFCShellListCtrl 使用此方法进行这种转换。 默认情况下,此方法使用当前区域设置将日期设置为字符串格式。

CMFCShellListCtrl::OnFormatFileSize

框架在将对象的大小转换为字符串时调用此方法。

virtual void OnFormatFileSize(
    long lFileSize,
    CString& str);

参数

lFileSize
[in] 框架将显示的文件的大小。

str
[out] 包含带格式文件大小的字符串。

备注

CMFCShellListCtrl 类对象需要显示文件的大小时,它需要将文件大小转换为字符串格式。 CMFCShellListCtrl 使用此方法进行这种转换。 默认情况下,此方法将文件大小从字节转换为千字节 (KB),然后使用当前区域设置将大小设置为字符串格式。

CMFCShellListCtrl::OnGetItemIcon

框架调用此方法来检索与 shell 列表项关联的图标。

virtual int OnGetItemIcon(
    int iItem,
    LPAFX_SHELLITEMINFO pItem);

参数

iItem
[in] 项索引。

pItem
[in] 描述项的 LPAFX_SHELLITEMINFO 参数。

返回值

如果该函数成功,则返回图标图像的索引;如果失败,则返回 -1。

备注

图标图像索引基于系统图像列表。

默认情况下,此方法依赖于 pItem 参数。 默认实现中不使用 iItem 的值。 你可以使用 iItem 来实现自定义行为

CMFCShellListCtrl::OnGetItemText

必须检索 shell 项的文本时,框架会调用此方法。

virtual CString OnGetItemText(
    int iItem,
    int iColumn,
    LPAFX_SHELLITEMINFO pItem);

参数

iItem
[in] 项索引。

iColumn
[in] 相关的列。

pItem
[in] 描述项的 LPAFX_SHELLITEMINFO 参数。

返回值

一个 CString,其中包含与项关联的文本。

备注

CMFCShellListCtrl 对象中的每个项可以在一个或多个列中包含文本。 当框架调用此方法时,它会指定相关的列。 如果你手动调用此函数,则也必须指定相关的列。

默认情况下,此方法依赖于 pItem 参数来确定要处理的项。 默认实现中不使用 iItem 的值

CMFCShellListCtrl::OnSetColumns

框架在设置列名时调用此方法。

virtual void OnSetColumns();

备注

默认情况下,框架会在 CMFCShellListCtrl 对象中创建四个列。 这些列的名称为 Name、Size、Type 和 Modified。 你可以重写此方法以自定义列的数量及其名称。

CMFCShellListCtrl::Refresh

刷新并重绘 CMFCShellListCtrl 对象。

virtual HRESULT Refresh();

返回值

如果成功,则返回 S_OK;否则返回错误值。

注解

调用此方法可刷新 CMFCShellListCtrl 对象显示的项列表。

CMFCShellListCtrl::SetItemTypes

设置 CMFCShellListCtrl 对象中列出的项的类型。

void SetItemTypes(SHCONTF nTypes);

参数

nTypes
[in] CMFCShellListCtrl 对象支持的项类型列表。

注解

有关项类型列表的详细信息,请参阅 SHCONTF

另请参阅

层次结构图

CMFCListCtrl 类
CMFCShellTreeCtrl 类