如果CFileDialog :: GetNextPathName太长,则返回截断的路径

时间:2013-07-17 08:26:17

标签: c++ mfc cfiledialog

我正在使用CFileDialog打开文件,我允许多项选择,当用户选择多个文件时我使用CFileDialog :: GetNextPathName方法迭代它们,但如果文件名太大则返回截断我不知道知道为什么会这样??

文件是用随机名称生成的,文件是成功创建的,但是当我尝试使用CFileDialog打开它们时,其中一些文件太长了就像

"dFR.45434$#%@#3$FDGH.reR'FGDF,jh'+=gh.fghj&^%$!()rthyfgf.gfdhdfAZXCNMNrtyuIUU;k][sdgf]fd(jk~-.ggfddFR.45434$#%@#3$FDGH.reR'FGDF,jh'+=gh.fghj&^%$!()rthyfgf.gfdhdfAZXCNMNrtyuIUU;k][sdgf]fd(jk~-.ggfddFR.45434$#%@#3$FDGH.reR'FGDF,jh'+=gh.fghj&^%$!()rthyfgf"

CFileDialog :: GetNextPathName方法返回它,并在其末尾返回一些丢失的字符。我不知道是什么问题!我确信文件的完整路径长度小于MAX_PATH

解决方案


我认为缓冲区将包含一个一个名字,并且调用get next将填充下一个,但我发现所有文件路径都以''或'\ 0'分隔,取决于某些标记以下与我合作很好

CFileDialog fd;
UINT maxFiles = 50;
UINT buffSize = maxFiles*(MAX_PATH + 1) +1;
CString buffer;
fd.GetOFN().lpstrFile = buffer.GetBuffer(buffSize);
fd.GetOFN().nMaxFile = buffSize;

if(fd.DoModal() == IDOK)
{
    //get start position using GetStartPosition , iterate over files using GetNextPathName
}
buffer.ReleaseBuffer();

0 个答案:

没有答案