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();
继承层次结构
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。