CFileDialog获取文件名长度的问题(总结前辈)

来源:互联网 发布:中国铁矿石进口数据 编辑:程序博客网 时间:2024/06/05 15:23

CFileDialog dlg(TRUE,NULL,NULL, OFN_FILEMUSTEXIST,strFilter);///TRUE为OPEN对话框,FALSE为SAVE AS对话框
    
 if( dlg.DoModal() != IDOK)  return; 
    FilePathName=dlg.GetPathName();
 CString   FileName = dlg.GetFileName();

 

得到的全路径GetPathName是正确的,但是FileName却少了后面几个字符,查了一下网上的信息,看到了别人也有类似的问题。

这个是我测试的文件名,其中用GetFileName获得的结果是少了后面的hd两个字符

 

“575636_GXJ_512x512x20_0.39x0.39x4.5_200801032__normalizedHead.mhd”

 

作者原文:

GetFilePath获取的全路径名正确,但是当遇到长文件名时,GetFileName获取不正确,找了半天才知道,原来当遇到长文件名时,用GetFileName却只能获取前63个字符(第64个位空终止符),所以若输入的文件名可能超过64个字符时,千万不要用GetFileName,可用GetFilePath获取全路径,然后从全路径截取文件名。或者干脆限制文件名长度。

CFileDialog dlg(TRUE,NULL,NULL,0,"All Files (*.*)|*.*|",this);
CString strPathName,strFileName; 
    if(dlg.DoModal()==IDOK)
{
strPathName=dlg.GetPathName();
}
strFileName = strPathName.Right(strPathName.GetLength()-strPathName.ReverseFind('\\')-1);
MessageBox(strFileName);

 

 

原始地址:http://blog.csdn.net/harry330/archive/2009/07/01/4313444.aspx

0 0
原创粉丝点击