Contents ...
udn網路城邦
vc下經常用到的操作
2015/12/06 13:18
瀏覽113
迴響0
推薦0
引用0
1、打開目錄

常用於目錄選擇

CString SelectPath()

{

 char filename[255];

 BROWSEINFO info;

 info.hwndOwner = NULL ;

 info.pidlRoot = (LPCITEMIDLIST)NULL;

 info.pszDisplayName = filename;

 info.lpszTitle = "請選擇文件夾:";

 info.ulFlags = BIF_BROWSEFORCOMPUTER | BIF_RETURNONLYFSDIRS  ;

 info.lpfn = NULL;

 info.lParam = 0;

 info.iImage = 0 ;

 LPITEMIDLIST idlist = SHBrowseForFolder(&info);

 char szpath[255];

 SHGetPathFromIDList(idlist,szpath);

 return szpath;

}


2、打開文件

常用於文件選擇


 CFileDialog dlg(true, NULL, NULL, NULL, "*.txt|*.txt||");

 if(dlg.DoModal() == IDOK)

 {

   CString strFile = dlg.GetPathName();

 }


3、遍歷目錄

采用遞歸方式,輸出文件名稱和路徑


#include "windows.h"

void BrowseFile(string& strFile)

{

 int nRet =0;

 string dirTemp;

 string strTemp;

 WIN32_FIND_DATA FindFileData;

 HANDLE hFind =INVALID_HANDLE_VALUE;

 string strDir = strFile;

 nRet = strDir.find_last_of("\");

 if(nRet  strDir+="\\*.*";

 else

  strDir+="*.*";

 hFind = FindFirstFile((char*)strDir.c_str(), &FindFileData);

 if (hFind == INVALID_HANDLE_VALUE)

  return ;


 while (FindNextFile(hFind, &FindFileData))

 {


  if(FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)

  {

   if((strcmp(FindFileData.cFileName, ".") == 0)|| (strcmp(FindFileData.cFileName, "..") == 0))

    continue;

   dirTemp=strFile;


   dirTemp=dirTemp+"\";

   dirTemp+= FindFileData.cFileName;

   BrowseFile(dirTemp);//遞歸調用

  }

  else //到達最低層的文件

  {


   strTemp=strFile;

   strTemp=strFile+"\";

   strTemp+=FindFileData.cFileName;

   nRet = FindStr(strFileName);

   cout<

  }

 }

   FindClose(hFind);


}

限會員,要發表迴響,請先登入