MFC:树形控件

本文档详细介绍了MFC中树形控件的成员函数,包括InitTreeFile()、SetTreeRoot()、SetUnwantedString()、SetAcceptMsgWnd()、GetPath()和SetTreeImageList()。这些函数用于初始化、设置根目录、屏蔽目录、设置消息响应窗口、获取节点路径和设置节点图标。此外,还展示了静态和动态使用案例,以及如何采用缓加载目录的方法优化性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

成员函数

函数名称 功能
CTreeCtrlDlg(CWnd* pParent = NULL); 构造函数
void InitTreeFile(); 初始化树形控件,如果复制或用其他对象初始化时需要调用
BOOL SetTreeRoot(const CString strPath); 设置根目录
void SetUnwantedString(const std::vector vecStr); 设置不想显示的子目录
BOOL SetAcceptMsgWnd(const HWND hWnd); 设置接收消息的窗口句柄
CString GetPath(); 获取当前被选中的目录
BOOL SetTreeImageList(CImageList * ImgList, int nImgList); 设置当前控件目录图标
InitTreeFile()

该函数是在通过一个对象来初始化另一个对象或把一个对象赋值给另一个对象后需要调用该函数,以初始化控件。

例如:

CSelfUpdateTreeCtrl * pTreeFile;
pTreeFile = new CSelfUpdateTreeCtrl(m_TreeFile); // m_TreeFile是另一个控件
pTreeFile->Create(TVS_EDITLABELS | TVS_HASBUTTONS | WS_CHILD | WS_VISIBLE,
        rect,
        this,
        IDC_TREE_NODE);
pTreeFile->ShowWindow(SW_SHOWNORMAL);
pTreeFile->InitTreeFile(); // 这里调用初始化函数,初始化控件
SetTreeRoot(const CString strPath)

设置控件根目录,在想要改变控件的根目录或者在创建对象的时候没有提供根目录的时候调用。返回值为BOOL型,如果返回值是TRUE,则成功。如果返回值是FALSE,则失败。

例如:

CSelfUpdateTreeCtrl treeCtrl;
treeCtrl.SetTreeRoot(_T("E:\\"));
SetUnwantedString(const std::vector vecStr)

不想有些目录出现,则可通过该函数设置一些要屏蔽的目录。

例如:

std::vector<CString> vecTemp;
vecTemp.push_back(_T("二值图"));
vecTemp.push_back(_T("缺陷大图"));
vecTemp.push_back(_T("实时图"));
vecTemp.push_back(_T("差影图"));
m_TreeFile.SetTreeRoot(m_strGlobalPath);
m_TreeFile.SetUnwantedString(vecTemp); // 设置不想显示文件夹的字符串
SetAcceptMsgWnd(const HWND hWnd)

如果需要其他窗口响应控件的焦点变化的消息则需要调用该函数来设置接收消息的窗口。而响应的窗口需要响应相关的消息。其消息为:WM_SELFUPDATETREECTRL_SELCHANGED。返回值为BOOL型,如果返回值是TRUE,则成功。如果返回值是FALSE,则失败。

例如:

std::vector<CString> vecTemp;
vecTemp.push_back(_T("二值图"));
vecTemp.push_back(_T("缺陷大图"));
vecTemp.push_back(_T("实时图"));
vecTemp.push_back(_T("差影图"));
m_TreeFile.SetTreeRoot(m_strGlobalPath);
m_TreeFile.SetUnwantedString(vecTemp);
m_TreeFile.SetAcceptMsgWnd(m_hWnd); // 设置接收消息的窗口
GetPath()

该函数是获取当前选中的节点的绝对路径。返回一个CString的,就是路径地址。

例如:

afx_msg LRESULT CBrowseDlg::OnSelfUpdateTreeMsg(WPARAM wParam,LPARAM lParam)
{
    LoadInformation(m_TreeFile.GetPath());
    return 0;
}
SetTreeImageList(CImageList * ImgList, int nImgList)

设置控件中节点的图标。返回值为BOOL型,如果返回值是TRUE,则成功。如果返回值是FALSE,则失败。


HICON hIcon = theApp.LoadIcon(IDI_ICON_TREEFILE);
CImageList imgList;
imgList.Create(16, 16, ILC_COLOR32, 3, 3);
for (int i = 0; i < 8; i++)
{
    imgList.Add(hIcon);
}
m_TreeFile.SetTreeImageList(&imgList, LVSIL_NORMAL);

使用案例

静态案例

声明为类成员变量

// 在头文件中声明为类
CSelfUpdateTreeCtrl m_TreeFile;
// 初始化控件
std::vector<CString> vecTemp;
vecTemp.push_back(_T("
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值