赞
踩
void CmapfileDlg::OnBnClickedNew2()
{
static char BASED_CODE szFilter[] = "Map Files (*.map)|*.map|MapCfg Files(*.mapCfg) |*.mapCfg||";
CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, /
szFilter,AfxGetMainWnd());
CString strPath;
CFileException e;
if(dlg.DoModal() == IDOK) //判断是否按下"保存"按钮
{
strPath = dlg.GetPathName(); //获得文件保存路径,为下面right(4)方便,而不用GetFileName();
//根据用户选择的扩展名下拉框来确定添加的扩展名
switch (dlg.m_ofn.nFilterIndex) //此处可以获取扩展名下拉框是采用的哪种过滤串
{
case 1:
{
if(strPath.Right(4) !=_T(".map") || strPath.Right(7) != _T(".map")) //判断文件扩展名
strPath += _T(".map");
break;
}
case 2:
{
if(strPath.Right(7) !=_T(".mapCfg") || strPath.Right(7) != _T(".mapCfg")) //判断文件扩展名
strPath += _T(".mapCfg");
break;
}
}
if( access(strPath, 0) == 0 )//需要#include <io.h> //上述CFileDialog 只能检查名字一模一样的文件是否已经存在,此段代码用来检测保存的文件未设置扩展名,该文件夹内是否有添加扩展名后名字一样的文件,但是有个问题,若文件夹内有 “1”的文件,想保存的文件名也是“1”,则会提示无法保存,而要的实际情况是,仍然可以保存,因为会添加扩展名进去。
{
CString strQuery;
strQuery.Format("%s 已经存在,要替换掉吗?", strPath);
if ( IDNO == ::MessageBoxA(m_hWnd, strQuery, "文件覆盖", MB_ICONQUESTION | MB_YESNO) )
{
OnBnClickedNew2();
}
}
CFile file(strPath,CFile::modeCreate|CFile::modeReadWrite); //创建文件
.......................
}
CFileDialog::m_ofn
说明:
m_ofn是OPENFILENAME类型的结构。使用此结构,在创建之后、用DoModal成员函数显示之前初始化文件打开和存盘对话框的外表。例如,可设置m_ofn的lpstrTitle成员为希望的对话框标题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。