void CUploadAppendixDlg::OnBnClickedAddFolder() { // TODO: 在此添加控件通知处理程序代码 CString csPath; BROWSEINFO bi; ZeroMemory(&bi,sizeof(BROWSEINFO)); bi.hwndOwner = GetSafeHwnd(); bi.lpszTitle = _T("abcdefg"); bi.ulFlags = BIF_RETURNONLYFSDIRS; LPITEMIDLIST pidl=SHBrowseForFolder(&bi); if(pidl == NULL) return; SHGetPathFromIDList(pidl, csPath.GetBuffer(MAX_PATH)); csPath.ReleaseBuffer(); if(csPath[csPath.GetLength()-1] != '//') csPath += _T("//*.*"); else csPath += _T("*.*"); BrowseDir(csPath); } void CUploadAppendixDlg::BrowseDir(CString csDir) { m_lvFiles.DeleteAllItems(); m_unFilesCount = 0; m_unFileFinish = 0; CFileFind fileFind; BOOL bRes = fileFind.FindFile(csDir); while(bRes) { bRes = fileFind.FindNextFile(); if (fileFind.IsDots()) { continue ; } if (fileFind.IsDirectory()) { CString csDir2 = fileFind.GetFilePath() + _T("//*.*"); BrowseDir(csDir2); continue ; } CFileStatus fStatus; CFile::GetStatus( fileFind.GetFilePath(), fStatus ); m_lvFiles.InsertItem(m_unFilesCount, fileFind.GetFileName(), 0); // 文件名 CString csSize; csSize.Format(_T("%d"), fStatus.m_size); m_lvFiles.SetItemText(m_unFilesCount, LVFCN_SIZE, csSize); // 文件大小 m_lvFiles.SetItemText(m_unFilesCount, LVFCN_MODIFY_TIME, fStatus.m_mtime.Format(_T("%Y-%m-%d %H:%M:%S"))); // 文件修改时间 m_lvFiles.SetItemText(m_unFilesCount, LVFCN_PATH, fileFind.GetFilePath()); // 文件路径 m_lvFiles.SetItemText(m_unFilesCount, LVFCN_CREATE_TIME, fStatus.m_ctime.Format(_T("%Y-%m-%d %H:%M:%S"))); // 文件创建时间 m_lvFiles.SetItemText(m_unFilesCount++, LVFCN_TYPE, GetFileExtendName(fileFind.GetFileName())); // 文件类型 } fileFind.Close(); } size_t m_unFilesCount; 记录控件中的数据条数 CListCtrl m_lvFiles; 显示文件内容