CMFCShellTreeCtrl 类
CMFCShellTreeCtrl
类通过显示 Shell 项的层次结构扩展 CTreeCtrl Class 功能。
有关详细信息,请参阅所安装的 Visual Studio 的 C\atlmfc\src\mfc 文件夹中的源代码。
语法
class CMFCShellTreeCtrl : public CTreeCtrl
成员
公共方法
名称 | 描述 |
---|---|
CMFCShellTreeCtrl::EnableShellContextMenu | 启用或禁用快捷菜单。 |
CMFCShellTreeCtrl::GetFlags | 返回传递给 IShellFolder::EnumObjects 的标志的组合。 |
CMFCShellTreeCtrl::GetItemPath | 检索项的路径。 |
CMFCShellTreeCtrl::GetRelatedList | 返回指向 CMFCShellListCtrl 类对象的指针,该对象与此 CMFCShellTreeCtrl 对象一起使用以创建类似于资源管理器的窗口。 |
CMFCShellTreeCtrl::OnChildNotify | 此窗口的父窗口在收到适用于此窗口的通知消息时会调用此成员函数由。 (替代 CWnd::OnChildNotify。) |
CMFCShellTreeCtrl::OnGetItemIcon | |
CMFCShellTreeCtrl::OnGetItemText | |
CMFCShellTreeCtrl::Refresh | 刷新并重新绘制当前 CMFCShellTreeCtrl 对象。 |
CMFCShellTreeCtrl::SelectPath | 基于提供的 PIDL 或字符串路径选择相应的树控件项。 |
CMFCShellTreeCtrl::SetFlags | 设置标志以筛选树上下文(类似于 IShellFolder::EnumObjects 使用的标志)。 |
CMFCShellTreeCtrl::SetRelatedList | 设置当前 CMFCShellTreeCtrl 对象与 CMFCShellListCtrl 对象之间的关系。 |
注解
此类通过使程序能够将 Windows Shell 项包含在树中来扩展 CTreeCtrl
类。 此类可与 CMFCShellListCtrl
对象相关联,以创建完整的资源管理器窗口。 随后,选择树中的项会显示关联列表中的 Windows Shell 项的列表。
继承层次结构
CMFCShellTreeCtrl
要求
标头:afxshelltreeCtrl.h
示例
下面的示例演示如何创建 CMFCShellTreeCtrl
类的对象。 此代码片段是 Explorer 示例的一部分。
CMFCShellTreeCtrl m_wndShellTree;
// const int idTree = 1
CRect rectDummy(0, 0, 0, 0);
const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES |
TVS_LINESATROOT | TVS_HASBUTTONS;
// The this pointer points to CFolderBar class which extends the CDockablePane class
m_wndShellTree.Create(dwViewStyle, rectDummy, this, idTree);
CMFCShellTreeCtrl::EnableShellContextMenu
启用快捷菜单。
void EnableShellContextMenu(BOOL bEnable = TRUE);
参数
bEnable
[in] 一个布尔值,指定是否启用快捷菜单。
CMFCShellTreeCtrl::GetFlags
返回为 CMFCShellTreeCtrl 类对象设置的标志。
DWORD GetFlags() const;
返回值
一个 DWORD 值,指定当前设置的标志的组合。
备注
每当刷新对象时,在 CMFCShellTreeCtrl
中设置的标志会发送到方法 IShellFolder::EnumObjects。 可以使用 CMFCShellTreeCtrl::SetFlags 方法更改标志。
CMFCShellTreeCtrl::GetItemPath
检索 CMFCShellTreeCtrl 类对象中项的路径。
BOOL GetItemPath(
CString& strPath,
HTREEITEM htreeItem = NULL) const;
参数
strPath
[out] 对字符串参数的引用。 该方法将项的路径写入此参数。
htreeItem
[in] 该方法检索此树控件项的路径。
返回值
如果成功,则为非零值;否则为 0。
备注
如果此方法失败,则 strPath 会包含空字符串。
如果未指定 hTreeItem,此方法会尝试获取当前所选项的字符串。 如果未选择任何项,并且 hTreeItem 为 NULL,则此方法会失败。
CMFCShellTreeCtrl::GetRelatedList
返回指向与此 CMFCShellTreeCtrl 对象关联的 CMFCShellListCtrl 类对象的指针。
CMFCShellListCtrl* GetRelatedList() const;
返回值
指向与此树控件对象关联的 CMFCShellListCtrl
对象的指针。
注解
通过将 CMFCShellListCtrl
对象与 CMFCShellTreeCtrl
对象结合使用,可以创建类似于资源管理器的窗口。 使用方法 CMFCShellTreeCtrl::SetRelatedList 可关联这两个类。 关联后,如果 CMFCShellTreeCtrl
中的选择发生更改,则框架会自动更新 CMFCShellListCtrl
。
CMFCShellTreeCtrl::OnChildNotify
virtual BOOL OnChildNotify(
UINT message,
WPARAM wParam,
LPARAM lParam,
LRESULT* pLResult);
参数
[in] message
[in] wParam
[in] lParam
[in] pLResult
返回值
备注
CMFCShellTreeCtrl::OnGetItemIcon
virtual int OnGetItemIcon(
LPAFX_SHELLITEMINFO pItem,
BOOL bSelected);
参数
[in] pItem
[in] bSelected
返回值
注解
CMFCShellTreeCtrl::OnGetItemText
virtual CString OnGetItemText(LPAFX_SHELLITEMINFO pItem);
参数
[in] pItem
返回值
注解
CMFCShellTreeCtrl::Refresh
刷新并重新绘制 CMFCShellTreeCtrl。
void Refresh();
注解
调用此方法以刷新在 CMFCShellTreeCtrl
中显示的项的层次结构。
CMFCShellTreeCtrl::SelectPath
基于提供的路径选择 CMFCShellTreeCtrl 类中的项。
BOOL SelectPath(LPCTSTR lpszPath);
BOOL SelectPath(LPCITEMIDLIST lpidl);
参数
lpszPath
[in] 指定项路径的字符串。
lpidl
[in] 指定项的 PIDL
返回值
如果成功,则返回 S_OK;否则返回 E_FAIL。
CMFCShellTreeCtrl::SetFlags
设置标志以筛选树上下文。
void SetFlags(
DWORD dwFlags,
BOOL bRefresh = TRUE);
参数
dwFlags
[in] 要设置的标志。
bRefresh
[in] 一个布尔值,指定是否应立即刷新 CMFCShellTreeCtrl
。
注解
CMFCShellTreeCtrl
会将所有设置的标志传递给 IShellFolder::EnumObjects。 有关不同标志的值的详细信息,请参阅 IShellFolder::EnumObjects。
CMFCShellTreeCtrl::SetRelatedList
将 CMFCShellListCtrl 对象与 CMFCShellTreeCtrl 对象关联。
void SetRelatedList(CMFCShellListCtrl* pShellList);
参数
pShellList
[in] 一个指向 CMFCShellListCtrl
对象的指针。
备注
此方法将 CMFCShellListCtrl
与 CMFCShellTreeCtrl
关联。 这些对象可能显示为类似于资源管理器的窗口:如果用户在 CMFCShellTreeCtrl
中选择某个对象,则 CMFCShellListCtrl
中的关联项会自动更新。
使用方法 CMFCShellTreeCtrl::GetRelatedList 可检索与 CMFCShellTreeCtrl
关联的 CMFCShellListCtrl
。