// 首先选择文件夹void CXMLtoolDlg::OnBrowseInput() ...{ BROWSEINFO bf; LPITEMIDLIST lpitem; memset(&bf,0,sizeof BROWSEINFO); bf.hwndOwner = this->m_hWnd; bf.lpszTitle = "选择路径"; bf.ulFlags = BIF_RETURNONLYFSDIRS; //属性可自己选择 lpitem = SHBrowseForFolder(&bf); if(lpitem==NULL) //如果没有选择路径则返回0 return ; //如果选择了路径则复制路径,返回路径长度 SHGetPathFromIDList(lpitem, m_InputDir.GetBufferSetLength(MAX_PATH)); m_InputDir.ReleaseBuffer(); UpdateData(FALSE);}// 然后遍历文件夹(中的xml文件)void CXMLtoolDlg::BrowseDir(CString strDir)...{ //AfxMessageBox(strDir); 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); // 递归调用 } else if(!ff.IsDirectory() && !ff.IsDots()) ...{ //CString strTitle = ff.GetFileTitle(); CString strTitle = ff.GetFilePath(); if (strTitle.Find(".xml")>-1 || strTitle.Find(".XML")>-1) ...{ //AfxMessageBox(strTitle); SomeFuncXXX(strTitle); // 处理文件 } //m_FileTree.InsertItem( strTitle, 0, 0, parent ); } } ff.Close();}