改进 <<遍历文件夹并建成目录树>>(转)
//原来的函数原型
void CFileTreeDlg::BrowseFile(int CallNum, CString strFile) { CallNum++; CFileFind ff; CString szDir = strFile; if(szDir.Right(1) != "\\") szDir += "\\"; szDir += "*.*"; BOOL res = ff.FindFile(szDir); while(res) { res = ff.FindNextFile(); if(ff.IsDirectory() && !ff.IsDots()) { //如果是一个子目录,用递归继续往深一层找 CString strPath = ff.GetFilePath(); CString strTitle = ff.GetFileTitle(); int i =0; switch(CallNum) { case 1: strHTFir = m_FileTree.InsertItem(strTitle,0,0,NULL); break; case 2: strHTSec = m_FileTree.InsertItem(strTitle,0,0,strHTFir); break; case 3: strHtThi = m_FileTree.InsertItem(strTitle,0,0,strHTSec); break; case 4: strHtFor = m_FileTree.InsertItem(strTitle,0,0,strHtThi); break; default: strHtFif = m_FileTree.InsertItem(strTitle,0,0,strHtFor); break; } BrowseFile(CallNum,strPath); } else if(!ff.IsDirectory() && !ff.IsDots()) { //显示当前访问的文件 CString strPath; CString strTitle; strPath = ff.GetFilePath(); strTitle = ff.GetFileTitle(); switch(CallNum) { case 1: strRoot = m_FileTree.InsertItem(strTitle,0,0,NULL); break; case 2: strHtEnd = m_FileTree.InsertItem(strTitle,0,0,strHTFir); break; case 3: strHtEnd = m_FileTree.InsertItem(strTitle,0,0,strHTSec); break; case 4: strHtEnd = m_FileTree.InsertItem(strTitle,0, 0,strHtThi); break; case 5: strHtEnd = m_FileTree.InsertItem(strTitle,0, 0,strHtFor); break; default: strHtEnd = m_FileTree.InsertItem(strTitle,0, 0,strHtFif); break; } } } ff.Close();//关闭 }//原来的函数调用
BOOL CFileTreeDlg::OnInitDialog() { CDialog::OnInitDialog(); SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon m_iImageList.Create(24, 24, TRUE,1, 0); HICON hIcon = NULL; hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_KEBIAO), IMAGE_ICON, 24, 24, 0); m_iImageList.Add(hIcon); m_FileTree.SetImageList ( &m_iImageList,TVSIL_NORMAL ); BrowseFile(0,"成绩表"); //遍历"成绩表"文件夹内的所有目录 return TRUE; }//改过后的函数原型
void CFileTreeDlg::BrowseDir( CString strDir, HTREEITEM parent ) { CFileFind ff; CString szDir = strDir; HTREEITEM hSubItem; if(szDir.Right(1) != "\\") szDir += "\\"; szDir += "*.*"; BOOL res = ff.FindFile(szDir); while( res ) { res = ff.FindNextFile(); if(ff.IsDirectory() && !ff.IsDots()) { CString strPath = ff.GetFilePath(); CString strTitle = ff.GetFileTitle(); hSubItem = m_FileTree.InsertItem( strTitle, 0, 0,parent ); BrowseDir( strPath, hSubItem ); } else if(!ff.IsDirectory() && !ff.IsDots()) { CString strTitle = ff.GetFileTitle(); m_FileTree.InsertItem( strTitle, 0, 0, parent ); } } ff.Close(); }//改过后的函数调用
BOOL CFileTreeDlg::OnInitDialog() { CDialog::OnInitDialog(); SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon m_iImageList.Create(24, 24, TRUE,1, 0); HICON hIcon = NULL; hIcon = (HICON)::LoadImage(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_KEBIAO), IMAGE_ICON, 24, 24, 0); m_iImageList.Add(hIcon); m_FileTree.SetImageList ( &m_iImageList,TVSIL_NORMAL ); BrowseDir( "成绩表", NULL ); return TRUE; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)