一、判断文件或者文件夹是否存在。
if (!PathFileExists(csFilePath))
{::CreateDirectory(csFilePath, NULL);}
二、打开windows类型对话框
static TCHAR strDirName[MAX_PATH];
BROWSEINFO bi;
CString szString = TEXT("选择一个文件夹");
bi.hwndOwner = ::GetFocus();
bi.pidlRoot = NULL;
bi.pszDisplayName = strDirName;
bi.lpszTitle = szString;
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 csFolder = csGPSDataPath + _T("\\*.txt");
CFileFind finder;
BOOL bWorking = finder.FindFile(csFolder);
while (bWorking)
{
bWorking = finder.FindNextFile();
if (finder.IsDots())
{
continue;
}
CString strPath = finder.GetFileName();
CString strFile = csGPSDataPath + _T("\\") + strPath;
vecAllFilePath.push_back(strFile);
}
finder.Close();
四、打开windows上次打开的对话框
BOOL CTestDlg::GetOpenSaveMRU(LPCTSTR strExtName,char *strMRUPath)
{
HKEY hKEY;
const char *mru="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\";
CString strmru(mru);
strmru += strExtName;
long lRet = RegOpenKeyEx(HKEY_CURRENT_USER,strmru,0,KEY_READ,&hKEY);
if (lRet != ERROR_SUCCESS ) {
return FALSE;
}
DWORD keytype1 = REG_SZ;
DWORD dwInBytes = 256;
BYTE pInBuf[256];
lRet = RegQueryValueEx(hKEY,"MRUList",NULL,&keytype1,pInBuf,&dwInBytes);
if (lRet != ERROR_SUCCESS ) {
return FALSE;
}
dwInBytes = 256;
char strLast[] = {pInBuf[0],0};
lRet = RegQueryValueEx(hKEY,(LPTSTR)strLast,NULL,&keytype1,(LPBYTE) strMRUPath,&dwInBytes);
if (lRet != ERROR_SUCCESS) {
return FALSE;
}
CString str1(strMRUPath);
int idx=str1.ReverseFind('\\');
strMRUPath[idx]=0;
RegCloseKey(hKEY);
return TRUE;
}