• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-145  評論-173  文章-70  trackbacks-0

            1.
            VOID CFileIO::GetFolderNamesInDir(CStringArray &StringArray, LPCTSTR lpszExpression)
            {
             CFileFind FileFind;
             CString str = lpszExpression;
             str += "\\*.*";
             if(!FileFind.FindFile(str))
              return;
             BOOL bFound;
             do{
              bFound = FileFind.FindNextFile();
              if(FileFind.IsDirectory())
              {
               CString strFileName = FileFind.GetFileName();
               if(strFileName != "." && strFileName != "..")
                StringArray.Add(FileFind.GetFileName());
              }
             }while(bFound);
            }
            此函數(shù)的入口參數(shù)是一個CString數(shù)組,后面的那個lpszExpression是一個要搜索的文件名,你可以選擇通配符,比如是"*.jpg"來搜索下面的所有的文件名。然后此函數(shù)會把文件名都存入到那個數(shù)組中,因?yàn)槭怯玫囊谩W⒁獾氖牵莻€lpszExpression需要絕對路徑,所以需要的格式是類似這種形式:"d:\\fp\\temp.bmp"。存入的也是名字,而沒有路徑的。

            2.選擇路徑。
            CString CFileIO::SelectDirectory(LPCTSTR lpszTitle)
            {
             static TCHAR strDirName[MAX_PATH];

             BROWSEINFO bi;
             bi.hwndOwner = ::GetFocus();
             bi.pidlRoot = NULL;
                bi.pszDisplayName = strDirName;
             bi.lpszTitle = lpszTitle;
                bi.ulFlags = BIF_BROWSEFORCOMPUTER | BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS;
                bi.lpfn = NULL;
             bi.lParam = 0;
             bi.iImage = 0;

             LPITEMIDLIST pItemIDList = ::SHBrowseForFolder(&bi);
             if(pItemIDList == NULL)
             {
              return "";
             }

             ::SHGetPathFromIDList(pItemIDList, strDirName);

             CString str = strDirName;
             if(str != "" && str.Right(1) != '\\')
              str += '\\';

             return str;
            }
            最終得到的str就是那個路徑的名字。上面的函數(shù)如果和下面這個配套使用的話,需要注意加如"\",因?yàn)樾枰嘁粋€。這個函數(shù)的目的就是為了打開一個文件夾的對話框讓你選擇。

            3.VOID CFileIO::GetFileNamesInDir(CStringArray &StringArray, LPCTSTR lpszExpression)
            {
             // The File Name should apply with "d:\\fp\\temp.bmp" Style
             CFileFind FileFind;
             if(!FileFind.FindFile(lpszExpression))
              return;
             BOOL bFound;
             do{
              bFound = FileFind.FindNextFile();
              if(!FileFind.IsDirectory())
               StringArray.Add(FileFind.GetFileName());
             }while(bFound);
            }
            傳入一個路徑,得到該路徑下面的所有的文件名,還是存入數(shù)組,不過沒有那些路徑名,而只是文件名。還要不會搜索下面的所有的文件夾,只是當(dāng)前文件夾下面是。
            但是,你可以用上面這三個函數(shù)做很多事情了。遞歸調(diào)用,完全可以實(shí)現(xiàn)之…………

            4.上面說到了遞歸調(diào)用。下面的這個就是實(shí)際的實(shí)現(xiàn)了讀取一個目錄下面所有的文件名,并且保存在一個CString數(shù)組中,而且還是詳細(xì)的文件路徑。
            static void GetAllFilePathInDir( CStringArray &strArray, CString strDir, CString strExt )
            {
             CFileFind finder;
             CString strFileName;
             if( strDir.IsEmpty() )
              return;
             if( strDir.Right(2) != "\\" )
              strDir = strDir + "\\";
             BOOL bWorking = finder.FindFile( strDir + "*.*" );
             while( bWorking )
             { 
              bWorking = finder.FindNextFile();
              
              if ( finder.IsDots() )
               continue;
              
              if ( finder.IsDirectory() )
              {
               GetAllFilePathInDir( strArray, finder.GetFilePath(), strExt );
               continue;
              }

              strFileName = finder.GetFilePath();
              strFileName.MakeLower();
              CString needExt = GetFileExt( strExt );
              CString srcExt = GetFileExt( strFileName );
              if( strExt == "*.*" || needExt == srcExt )
              {
               strArray.Add( strFileName );
              }
             } 

             finder.Close();
            }
            一個典型的調(diào)用參數(shù)就是下面的這個:
            GetAllFilePathInDir(FilenameALL,szSourceFilename,"*.jpg");
             for (int i = 0; i < FilenameALL.GetSize(); i++)
             {
              ::MessageBox(NULL,FilenameALL.GetAt(i),"ok",MB_OK);
             }
            注意,前面第一個參數(shù)是表示要存放的數(shù)組,第二個是你要查找的那個路徑,第三個是查找的文件名。可以用通配符來實(shí)現(xiàn)查找。這樣就完成了功能。
            強(qiáng)大的MFC。。。。

            posted on 2009-12-12 16:49 deercoder 閱讀(1200) 評論(0)  編輯 收藏 引用 所屬分類: MFC
            久久精品国产亚洲AV久| 久久亚洲AV成人无码软件| 99久久精品费精品国产一区二区| 99久久99久久精品免费看蜜桃| 免费观看成人久久网免费观看| 久久99精品久久久久久野外| 精品久久久一二三区| 国产精品青草久久久久婷婷 | 久久棈精品久久久久久噜噜| 精品精品国产自在久久高清| 亚洲国产成人久久综合区| 久久99国产综合精品| 久久伊人亚洲AV无码网站| 精品永久久福利一区二区 | 综合久久久久久中文字幕亚洲国产国产综合一区首| 久久精品国产精品亜洲毛片| 99精品国产在热久久无毒不卡| 亚洲精品视频久久久| 精品久久久久久无码人妻热| 精品综合久久久久久888蜜芽| 亚洲伊人久久成综合人影院 | 久久天天日天天操综合伊人av| 久久久亚洲欧洲日产国码aⅴ| 四虎久久影院| 久久精品亚洲乱码伦伦中文| 久久久久综合网久久| 国产精品99久久免费观看| 麻豆AV一区二区三区久久| 久久亚洲精品国产精品婷婷| 色婷婷久久久SWAG精品| 久久婷婷五月综合97色直播| 精品久久久久久国产三级| 久久香蕉一级毛片| 青青草原1769久久免费播放| 国产成人精品久久一区二区三区| 精产国品久久一二三产区区别 | 东京热TOKYO综合久久精品| 无码人妻精品一区二区三区久久| 欧美精品乱码99久久蜜桃| 欧美亚洲国产精品久久| 久久99热这里只有精品国产|