vc 使用CFileDialog打开或保存文件
vc 使用CFileDialog打开或保存文件
今天是我的生日,也祝福自己生日快乐,以后要淡化生日。
//一。单选的“浏览文件对话框”
void one_select_file(CString &strPath,CString &strFile,BOOL open_save)
{//单选的“浏览文件对话框”
//CFileDialog第一个参数, TRUE为"打开"Open, FALSE为"另存"Save As
文件(*.csv)|*.csv|所有文件(*.*) |*.*||" );
CFileDialog fileDlg(open_save , // TRUE打开Open,FALSE保存Save As文件对话框
".csv", // 默认的打开文件的类型
strFile, // 默认打开的文件名
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT | OFN_NOCHANGEDIR , // 单选打开
"Excel文件(*.csv)|*.csv|所有文件(*.*) |*.*||" // 打开的文件类型
);
fileDlg.m_ofn.lpstrInitialDir=strPath;//初始化路径。
if(fileDlg.DoModal() == IDOK)
{
strFile = fileDlg.GetPathName();//返回选择或输入的文件名称,
}
}
//二。多选的“浏览文件对话框”
void mul_select_file(CString strPath,CString &strFiles,CString split)
{
CFileDialog fileDlg(TRUE, // TRUE打开,FALSE保存文件对话框
".csv", // 默认的打开文件的类型
NULL, // 默认打开的文件名
OFN_ALLOWMULTISELECT|OFN_ENABLESIZING|OFN_HIDEREADONLY | OFN_NOCHANGEDIR, // 多选打开
"Excel文件(*.csv)|*.csv|所有文件(*.*) |*.*||" // 打开的文件类型
);
fileDlg.m_ofn.lpstrTitle="选择多个文件";
fileDlg.m_ofn.lpstrInitialDir=strPath.GetBuffer(0); // 设置默认路径
if (IDOK==fileDlg.DoModal())
{
CString pathName;
POSITION pos_file;
pos_file = fileDlg.GetStartPosition();
strFiles="";
while(NULL!=pos_file)
{//循环读出每个文件路径和名称
pathName=fileDlg.GetNextPathName(pos_file);
strFiles+=pathName+split;//"|";
}
}
}
//三。调用方式
void test()
{
CString strPath="c:/";
CString strFileName="my.csv";
//1. 获得要“打开”文件
one_select_file(strPath,strFileName,TRUE); //TRUE打开文件
//。。。获得文件名称后,可以在这里做“打开”,从磁盘文件获取内容
//2. 获得要“另存”文件名称
one_select_file(strPath,strFileName,FALSE); //FALSE另存文件
//。。。获得文件名称后,可以在这里做“另存”,将内容存入磁盘文件
//3. 获得选择的多个文件全名称
CString strFiles;
CString split="|";
mul_select_file(strPath,strFiles,split);
AfxMessageBox(strFiles);
}
//四 初始路径的指定
1 实际上是CFileDialog 来回切换路径,第三个参数filename若使用相对路径是找不到的,只有包含绝对路径才能找到,比如 filename=“c:\test\*.*” ,filename=“ c:\test\*.mp3” 才导向目标路径,这点要注意。
CFileDialog fd(TRUE ,NULL,filename,OFN_HIDEREADONLY ,"音频文件|*.mp3|所有文件(*.*) |*.*||");
2 为了 避免当前路径改变,则要把在CFileDialog的第四个参数dwFlags标志设置为OFN_NOCHANGEDIR
只读,隐含,覆盖写,不改变路径,最完整的方法如下:
CFileDialog fDlg(open_save ,NULL , filename , OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_NOCHANGEDIR , "波形文件(*.csv)|*.csv|所有文件(*.*) |*.*||" );
vc 使用CFileDialog打开或保存文件
今天是我的生日,也祝福自己生日快乐,以后要淡化生日。
//一。单选的“浏览文件对话框”
void one_select_file(CString &strPath,CString &strFile,BOOL open_save)
{//单选的“浏览文件对话框”
//CFileDialog第一个参数, TRUE为"打开"Open, FALSE为"另存"Save As
文件(*.csv)|*.csv|所有文件(*.*) |*.*||" );
CFileDialog fileDlg(open_save , // TRUE打开Open,FALSE保存Save As文件对话框
".csv", // 默认的打开文件的类型
strFile, // 默认打开的文件名
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT | OFN_NOCHANGEDIR , // 单选打开
"Excel文件(*.csv)|*.csv|所有文件(*.*) |*.*||" // 打开的文件类型
);
fileDlg.m_ofn.lpstrInitialDir=strPath;//初始化路径。
if(fileDlg.DoModal() == IDOK)
{
strFile = fileDlg.GetPathName();//返回选择或输入的文件名称,
}
}
//二。多选的“浏览文件对话框”
void mul_select_file(CString strPath,CString &strFiles,CString split)
{
CFileDialog fileDlg(TRUE, // TRUE打开,FALSE保存文件对话框
".csv", // 默认的打开文件的类型
NULL, // 默认打开的文件名
OFN_ALLOWMULTISELECT|OFN_ENABLESIZING|OFN_HIDEREADONLY | OFN_NOCHANGEDIR, // 多选打开
"Excel文件(*.csv)|*.csv|所有文件(*.*) |*.*||" // 打开的文件类型
);
fileDlg.m_ofn.lpstrTitle="选择多个文件";
fileDlg.m_ofn.lpstrInitialDir=strPath.GetBuffer(0); // 设置默认路径
if (IDOK==fileDlg.DoModal())
{
CString pathName;
POSITION pos_file;
pos_file = fileDlg.GetStartPosition();
strFiles="";
while(NULL!=pos_file)
{//循环读出每个文件路径和名称
pathName=fileDlg.GetNextPathName(pos_file);
strFiles+=pathName+split;//"|";
}
}
}
//三。调用方式
void test()
{
CString strPath="c:/";
CString strFileName="my.csv";
//1. 获得要“打开”文件
one_select_file(strPath,strFileName,TRUE); //TRUE打开文件
//。。。获得文件名称后,可以在这里做“打开”,从磁盘文件获取内容
//2. 获得要“另存”文件名称
one_select_file(strPath,strFileName,FALSE); //FALSE另存文件
//。。。获得文件名称后,可以在这里做“另存”,将内容存入磁盘文件
//3. 获得选择的多个文件全名称
CString strFiles;
CString split="|";
mul_select_file(strPath,strFiles,split);
AfxMessageBox(strFiles);
}
//四 初始路径的指定
1 实际上是CFileDialog 来回切换路径,第三个参数filename若使用相对路径是找不到的,只有包含绝对路径才能找到,比如 filename=“c:\test\*.*” ,filename=“ c:\test\*.mp3” 才导向目标路径,这点要注意。
CFileDialog fd(TRUE ,NULL,filename,OFN_HIDEREADONLY ,"音频文件|*.mp3|所有文件(*.*) |*.*||");
2 为了 避免当前路径改变,则要把在CFileDialog的第四个参数dwFlags标志设置为OFN_NOCHANGEDIR
只读,隐含,覆盖写,不改变路径,最完整的方法如下:
CFileDialog fDlg(open_save ,NULL , filename , OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_NOCHANGEDIR , "波形文件(*.csv)|*.csv|所有文件(*.*) |*.*||" );