为什么CFileDialog :: GetNextPathName在文件路径很长时不起作用?

Jav*_*vid 6 c++ winapi mfc path cfiledialog

使用CFileDialog类,我选择放置在具有长路径的目录中的多个文件.当我只选择一个或两个文件时,它没关系; 但是当我同时选择三个文件时,它只返回第三个文件路径的一部分.(看起来它可能限制为512个字符)我该如何解决这个问题?

Nik*_*lis 5

MFC使用大小的默认缓冲区,_MAX_PATH这就是您看到该行为的原因.查看dlgfile.cpp实施情况CFileDialog::CFileDialog,您将看到m_ofn.lpstrFilem_ofn.nMaxFile正在设置.

如果需要,可以指定更大的缓冲区.拨打电话之前DoModal,你可以访问CFileDialog::m_pOFN一个得到指针OPENFILENAMECFileDialog将使用直接更新或打电话CFileDialog::GetOFN去结构的参考和更新.

无论哪种方式,你会发现这有用:http://msdn.microsoft.com/en-US/library/ms646839(v = vs.80).aspx