Windows图形界面(GUI)-MFC-C/C++ - 树形视图(Tree Control) - CTreeCtrl

发布于:2024-08-10 ⋅ 阅读:(94) ⋅ 点赞:(0)

目录

树形视图(Tree Control) - CTreeCtrl

创建和初始化

添加和删除项

获取和设置项属性

操作项

项选择变化

项双击

项展开

示例代码


树形视图(Tree Control) - CTreeCtrl

创建和初始化

  • SubclassDlgItem:将对话框中的控件子类化,使其与CTreeCtrl对象关联。

  • Create:动态创建一个树形视图控件。

添加和删除项

  • InsertItem:在树形视图中插入一个新项。

  • DeleteItem:从树形视图中删除一个项。

  • DeleteAllItems:删除树形视图中的所有项。

获取和设置项属性

  • SetItemText:设置树形视图中项的文本。

  • GetItemText:获取树形视图中项的文本。

  • SetItemImage:设置树形视图中项的图像。

  • GetItemImage:获取树形视图中项的图像。

操作项

  • Expand:展开或折叠树形视图中的项。

  • Select:选择树形视图中的项。

  • EnsureVisible:确保树形视图中的项可见。

项选择变化

  • TVN_SELCHANGED:当树形视图中的项选择发生变化时触发。
项双击

  • TVN_SELCHANGING:当树形视图中的项选择即将发生变化时触发。
项展开

  • TVN_ITEMEXPANDED:当树形视图中的项被展开或折叠后触发。
示例代码
void CMainDlg::OnBnClickedButton31()
{
	DWORD dwDrivers = ::GetLogicalDrives();

	for (size_t i = 0; i < 26; i++)
	{
		if ((dwDrivers & (1 << i)) != 0)
		{
			CString strDriver;
			strDriver.Format(_T("%c:"), 'A' + i);
			HTREEITEM hRoot = m_Tree.InsertItem(strDriver, 0, 0, TVI_ROOT, TVI_LAST);
			DirFileInfo(hRoot, strDriver);
		}
	}
}

void CMainDlg::DirFileInfo(HTREEITEM hParent, const CString& strPath)
{
	CFileFind fileFind;
	CString CurPath = strPath + _T("\\*.*");
	BOOL bRet = fileFind.FindFile(CurPath);
	while (bRet)
	{
		bRet = fileFind.FindNextFileW();
		if (fileFind.IsDirectory() && !fileFind.IsDots())
		{
			HTREEITEM hRoot = m_Tree.InsertItem(fileFind.GetFileName(), 0, 0, hParent);
			DirFileInfo(hRoot, strPath + _T("\\") + fileFind.GetFileName());
		}
		else if (!fileFind.IsDirectory() && !fileFind.IsDots() && !fileFind.IsHidden())
		{
			m_Tree.InsertItem(fileFind.GetFileName(), 0, 0, hParent);
		}
	}
}


网站公告

今日签到

点亮在社区的每一天
去签到