今天在调试一个程序时发现,
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获取全路径,然后从全路径截取文件名。或者干脆限制文件名长度。
原始地址:http://blog.csdn.net/harry330/archive/2009/07/01/4313444.aspx