//同時打開N個文件
void COpenNFileDlg::OnButton1()
{
CString pathName,fileName,fileTitle;
char* filters = _T("PCM文件(*.pcm)|*.pcm");
//創建一個可以選擇多個文件的CFileDialog
CFileDialog fileDlg(true,NULL,"*.pcm",OFN_ALLOWMULTISELECT | OFN_ENABLESIZING | OFN_HIDEREADONLY,filters);
//最多可以打開500個文件
fileDlg.m_ofn.nMaxFile = 500 * MAX_PATH;
char* ch = new TCHAR[fileDlg.m_ofn.nMaxFile];
fileDlg.m_ofn.lpstrFile = ch;
//對內存塊清零
ZeroMemory(fileDlg.m_ofn.lpstrFile,sizeof(TCHAR) * fileDlg.m_ofn.nMaxFile);
//顯示文件對話框,獲得文件名集合
if(fileDlg.DoModal() == IDOK){
//獲取第一個文件的位置
POSITION pos_file;
pos_file = fileDlg.GetStartPosition();
//用CString數組存放文件的路徑
CArray<CString, CString> ary_filename;
//存放文件的標題
CArray<CString, CString> ary_fileTitle;
//循環讀出每個路徑並存放在數組中
while(pos_file != NULL){
//將文件路徑存放在數組中
pathName = fileDlg.GetNextPathName(pos_file);
ary_filename.Add(pathName);
//獲取文件名
//從字符串的後面往前遍歷,如果遇到'\'則結束遍歷,'\'右邊的字符串則爲文件名
int length = pathName.GetLength();
for(int i = length -1; i>0;i--)
{
if('\' == pathName. GetAt(i))
{//判斷當前字符是否是'\'
fileName = pathName.Right(length - i -1);
break;//跳出循環
}
}//endfor
//獲取文件名(不包含後綴)
//採用CString的Left(int count)截取CString中從左往右數的count個字符
//fileName.GetLength()-4中的4表示".dat"四個字符
fileTitle = fileName.Left(fileName.GetLength()-4);
//AfxMessageBox(fileTitle);
ary_fileTitle.Add(fileTitle);//將文件名(不包含後綴)添加到數組中
}
}
delete[] ch;
}
MFC中使用CFileDialog可以批量選擇文件的方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.