VC:遍历文件夹下所有文件和文件夹(CFileFind类、树视图控件、图像链表、HTREEITEM句柄、TV_INSERTSTRUCT 结构体)...

1、添加变量:

       HTREEITEM hDad;

       HICON hIcon;

       TV_INSERTSTRUCT tvinsert;

       CImageList m_imagelist;

2、OnInitDialog()中初始化:

       // TODO: Add extra initialization here

       m_imagelist.Create(16,16,0,8,8);

       hIcon=AfxGetApp()->LoadIcon(IDI_ICON1);

       m_imagelist.Add(hIcon);

       CTreeCtrl * pTree=(CTreeCtrl *)GetDlgItem(IDC_TREE);

       pTree->SetImageList(&m_imagelist,TVSIL_NORMAL);

       //开始显示树视图控件

       tvinsert.hParent=NULL;

       tvinsert.hInsertAfter=TVI_LAST;

       tvinsert.item.mask=TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_TEXT;

       tvinsert.item.hItem=NULL;

       tvinsert.item.state=0;

       tvinsert.item.stateMask=0;

       tvinsert.item.cchTextMax=6;

       tvinsert.item.iSelectedImage=1;

       tvinsert.item.lParam=0;

 

       //显示第一层

       tvinsert.item.pszText="D:\\VC";

       tvinsert.item.iImage=0;

       tvinsert.item.iSelectedImage=0;

       hDad=pTree->InsertItem(&tvinsert);

       CString filepath="D:\\VC\\*.*";

 

       //调用自定义函数:

       Findfile(filepath,hDad);

3、添加自定义函数:

void CFileFindDlg::Findfile(CString str, HTREEITEM h)

{

       CTreeCtrl * pTree=(CTreeCtrl *)GetDlgItem(IDC_TREE);

       CFileFind filefind;

       CString filepath=str;

       CString filename;

 

       tvinsert.hParent=h;

       tvinsert.item.iImage=0;

       tvinsert.item.iSelectedImage=0;

 

       BOOL flag=filefind.FindFile(filepath);

       while(flag)

       {

              flag=filefind.FindNextFile();

              if(filefind.IsDots())

              {

                     continue;

              }

              else

              {

                     if(filefind.IsDirectory())

                     {

                            filename=filefind.GetFileName();

                            tvinsert.item.pszText=strdup(filename);

                            tvinsert.hParent=h;

                            hDad=pTree->InsertItem(&tvinsert);

                            Findfile(filefind.GetFilePath()+"\\*.*",hDad);//递归查找文件

                     }

                     else

                     {

                            tvinsert.hParent=h;

                            filename=filefind.GetFileName();

                            tvinsert.item.pszText=strdup(filename);

                            pTree->InsertItem(&tvinsert);

                     }

              }

       }

}

转载于:https://www.cnblogs.com/shenchao/archive/2012/10/15/2725075.html

/** ===================================================== 功能: CFolderContent搜索一个目录, 列出该目录下的所有目录名称,列出所有子目录下的文件名称等属性。 作者: jef 作者邮箱: dungeonsnd@126.com 发步时间: 20100311 版本: v1.1 版权: 请遵循GNU. 对外接口: int GetAllSub(CString csPath) csPath: 一个目录或者一个完整的文件名 使用举例: void CGetFolderContentView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CString cs,csSaveFileName,csFileSave,csT,csT1; cs ="C:\\Documents and Settings\\All Users\\Documents\\My Music"; char chModule[8192]; memset(chModule,0,8192); GetModuleFileName(NULL,chModule,8192); csT.Format("%s",chModule); csT =csT.Left( csT.ReverseFind(_T('\\')) ); csSaveFileName =csT+_T("\\FolderContent输出文件.txt"); CRect rtClient; GetClientRect(&rtClient); CClientDC dc(this); dc.SetTextColor(RGB(200,80,80)); dc.FillSolidRect(rtClient,RGB(240,240,240)); CFolderContent fc; fc.GetAllSub(cs); int i,len,k; csT ="-------"; csT =cs+"总大小为"; csT1.Format(" %.4fMB,清单文件已保存在 %s",fc.m_dTotalSize/double(1024*1024),csSaveFileName); csT +=csT1; csT +="-------"; dc.TextOut(5,0,csT); csFileSave +=csT+_T("\r\n"); csT ="-------"; csT +="所有子目录如下:"; csT +="-------"; dc.TextOut(5,25,csT); csFileSave +=csT+_T("\r\n"); len =fc.m_Directory.GetSize(); for (i=0;i<len;i++) { csT.Format(" 大小:%.4fMB",fc.m_vecDirectorySize[i]/double(1024*1024)); csT1.Format(" 创建时间:%d年%d月%d日 ", fc.m_vecFileLastCreationTime[i].wYear, fc.m_vecFileLastCreationTime[i].wMonth, fc.m_vecFileLastCreationTime[i].wDay); csT =csT+csT1; csT =fc.m_Directory.GetAt(i)+csT; dc.TextOut(5,(i+2)*20,csT); csFileSave +=csT+_T("\r\n"); } k =i; csT ="-------"; csT +="所有文件如下:"; csT +="-------"; dc.TextOut(5,(k+3)*20,csT); csFileSave +=csT+_T("\r\n"); len =fc.m_PathNameExt.GetSize(); for (i=0;i<len;i++) { csT.Format(" 大小:%.4fMB",fc.m_vecFileSize[i]/double(1024*1024)); csT1.Format(" 修改时间:%d年%d月%d日 ", fc.m_vecFileLastWriteTime[i].wYear, fc.m_vecFile
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值