TCHAR szFilter[] = _T("DXF Files|*.dxf|Sharp Files|*.shp||");
CFileDialog
dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY,szFilter);
dlg.m_ofn.lpstrTitle
= _T("新建矢量文件");
if
(dlg.DoModal()==IDOK)
{
CString
newFile = _T("");
char*
strFileExt = _T("");
CString
strFile = dlg.GetPathName();
const
char* strFileExtTmp = strrchr((LPCTSTR)strFile,'.')+1;
DWORD
filterIndex = dlg.m_ofn.nFilterIndex;
switch
(filterIndex)
{
case
1:
strFileExt
= _T("dxf");
dlg.m_ofn.lpstrDefExt
= _T("dxf");
break;
case
2:
strFileExt
= _T("shp");
dlg.m_ofn.lpstrDefExt
= _T("shp");
break;
}
const
char* strFileName=strrchr((LPCTSTR)strFile,_T('\\'))+1;
if
( strFileName>strFileExtTmp || (_stricmp(strFileExtTmp, _T("dxf"))&&_stricmp(strFileExtTmp, _T("shp")))) {
strFile
= strFile + _T(".") + strFileExt;
}
else
{
strFileExt
= (char*)strFileExtTmp;
}
if(_stricmp(strFileExt,
"dxf")==0)
{
string
pathName = (string)strFile;
const
char *str=pathName.c_str();
char
c;
while(1)
{
c=*str++;
if
(c==0) break; //如果到字符串尾则说明该字符串没有中文字符
if
(c&0x80) //如果字符高位为1且下一字符高位也是1则有中文字符
if
(*str & 0x80)
{
AfxMessageBox(_T("创建的文件路径中不能包含中文字符,请确认!"));
return;
}
}
}
if
(_access(strFile,0)!=-1) {
if
(AfxMessageBox(_T("覆盖?"),MB_YESNO)==IDNO) {
return;
}
}
if(_stricmp(strFileExt,_T("dxf"))==0)
{
}
else
if(_stricmp(strFileExt,_T("shp"))==0)
{
}
}
CFileDialog如何使用lpstrFilter创建文件
最新推荐文章于 2025-05-31 15:32:12 发布