![]() |
#2
yuccn2013-01-08 17:00
|

void ClisttestDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
//CDialogEx::OnOK();
// TODO: 在此添加控件通知处理程序代码
CFileDialog dlg(true);
if (dlg.DoModal() == IDOK)
{
//this->MessageBox(L"选择的文件地址:" + dlg.GetPathName() + " | 选择的文件名:" + dlg.GetFileName() ,
// L"提示:",MB_OK);
}
else
this->MessageBox(L"你选择了取消按钮");
/*
CFileDialog 相关属性值
GetFileExt 获得所选文件的后缀名
GetFileName 获得所选文件的名称
GetFileTitle 获得文件全名 (不含扩展名)
GetFolderPath 获得文件路径
GetNextPathName 获得下一个文件路径全名(多选文件时使用)
GetPathName 获得路径全名
GetStartPosition 获得所选文件的第一个文件的定位信息(多选时使用)
*/
FILE* fp;
//由于fopen()函数中需要的文件名参数是字符型的,所以我们还需要把CString类型的文件名转换为字符类型的变量。
int i, length;
//定义i作为循环变量,定义length作为文件路径及文件名的长度
char* FileName;
//定义char型的字符指针来存储文件名,给fopen()函数使用
CString fileName;
fileName=dlg.GetPathName();
length=fileName.GetLength();
//把文件名的长度赋给length变量
FileName=new char[length];
//给char型的指针变量FileName分配内存空间
for(i=0;i<length;i++) //把CString型变量fileName中的字符一个一个地赋给char型的指针变量FileName
*(FileName+i)=fileName.GetAt(i);
*(FileName+length)=NULL; //在FileName变量的最后加上一个结束标志
fp=fopen(FileName,"rb");
if(fp!=NULL) this->MessageBox((LPCTSTR)FileName,(LPCTSTR)fileName,MB_OK); else this->MessageBox(L"文件打开错误",L"文件名转换出现错误",MB_OK);
}
这里如果文件名是ansi的还没啥问题 如果是中文的 就出现错误{
// TODO: 在此添加控件通知处理程序代码
//CDialogEx::OnOK();
// TODO: 在此添加控件通知处理程序代码
CFileDialog dlg(true);
if (dlg.DoModal() == IDOK)
{
//this->MessageBox(L"选择的文件地址:" + dlg.GetPathName() + " | 选择的文件名:" + dlg.GetFileName() ,
// L"提示:",MB_OK);
}
else
this->MessageBox(L"你选择了取消按钮");
/*
CFileDialog 相关属性值
GetFileExt 获得所选文件的后缀名
GetFileName 获得所选文件的名称
GetFileTitle 获得文件全名 (不含扩展名)
GetFolderPath 获得文件路径
GetNextPathName 获得下一个文件路径全名(多选文件时使用)
GetPathName 获得路径全名
GetStartPosition 获得所选文件的第一个文件的定位信息(多选时使用)
*/
FILE* fp;
//由于fopen()函数中需要的文件名参数是字符型的,所以我们还需要把CString类型的文件名转换为字符类型的变量。
int i, length;
//定义i作为循环变量,定义length作为文件路径及文件名的长度
char* FileName;
//定义char型的字符指针来存储文件名,给fopen()函数使用
CString fileName;
fileName=dlg.GetPathName();
length=fileName.GetLength();
//把文件名的长度赋给length变量
FileName=new char[length];
//给char型的指针变量FileName分配内存空间
for(i=0;i<length;i++) //把CString型变量fileName中的字符一个一个地赋给char型的指针变量FileName
*(FileName+i)=fileName.GetAt(i);
*(FileName+length)=NULL; //在FileName变量的最后加上一个结束标志
fp=fopen(FileName,"rb");
if(fp!=NULL) this->MessageBox((LPCTSTR)FileName,(LPCTSTR)fileName,MB_OK); else this->MessageBox(L"文件打开错误",L"文件名转换出现错误",MB_OK);
}
2、mfc中 不用fopen(应该是c的东东) 那应该用啥实现类似的功能的