VC6.0中CFileDialog怎么选择多个文件?
3个回答
2016-04-21 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
//同时打开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;
}
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;
}
展开全部
//同时打开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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-06
展开全部
CFileDialog dlg(TRUE);
TCHAR lpszFileName[MAX_FILENUM];
dlg.m_ofn.Flags |= OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY;
dlg.m_ofn.nMaxFile = 262;
dlg.m_ofn.lpstrFilter = "Text File(*.txt)\0*.txt\0\0";
dlg.m_ofn.lpstrFile = lpszFileName;
dlg.m_ofn.lStructSize = sizeof(dlg.m_ofn);
if (dlg.DoModal() != IDOK)
{
}
TCHAR lpszFileName[MAX_FILENUM];
dlg.m_ofn.Flags |= OFN_ALLOWMULTISELECT|OFN_HIDEREADONLY;
dlg.m_ofn.nMaxFile = 262;
dlg.m_ofn.lpstrFilter = "Text File(*.txt)\0*.txt\0\0";
dlg.m_ofn.lpstrFile = lpszFileName;
dlg.m_ofn.lStructSize = sizeof(dlg.m_ofn);
if (dlg.DoModal() != IDOK)
{
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询