/*
1.创建支持多文件的CFileDialog的对象
2.定义最多可以打开的文件数并内存块清零
3.调用DoMdal()显示对话框
4.获取第一个文件的路径和文件名并放入到容器中
5.获取下一个文件的路径和文件名并放入到容器中直到最后一个
*/
注:以下代码在一个响应按钮消息的函数中
m_strPath记录文件的路径类型vector<CString>,m_MusicName记录文件的名称类型
是vector<CString>.
CString pathName, fileName;
char* filters = _T("mp3文件(*.mp3)|*.mp3");
//创建一个可以选择多个文件的CFileDialog
CFileDialog fileDlg(true, NULL, "*.mp3", 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;
int m_Count=-1;
//循环读出每个路径并存放在数组中
while (pos_file != NULL){
//将文件路径存放在数组中
pathName = fileDlg.GetNextPathName(pos_file);
//ary_filename.Add(pathName);
m_strPath.push_back(pathName);
//获取文件名
//从字符串的后面往前遍历,如果遇到'\'则结束遍历,'\'右边的字符串则为文件名
int length = pathName.GetLength();
CString compare = "\\";
for (int i = length - 1; i>0; i--)
{
if (pathName. GetAt(i) == compare)
{//判断当前字符是否是'\'
fileName = pathName.Right(length - i - 1);
m_MusicName.push_back(fileName);
m_Count++;
m_List_Ctrl.InsertItem(m_Count,fileName);
break;//跳出循环
}
}
}
}
delete[] ch;
mfcCFileDialog类多文件的选择和解析
最新推荐文章于 2023-12-20 17:45:54 发布