使用CFileDialog
类,我选择了放置在具有长路径的目录中的多个文件。当我只选择一个或两个文件时可以。但是当我同时选择三个文件时,它仅返回第三文件路径的一部分。 (看起来它可能限制为512个字符)如何解决此问题?
最佳答案
MFC使用大小为_MAX_PATH
的默认缓冲区,这就是为什么您看到这种行为的原因。查看dlgfile.cpp
以了解CFileDialog::CFileDialog
的实现,您将看到m_ofn.lpstrFile
和m_ofn.nMaxFile
被设置。
您可以根据需要指定更大的缓冲区。在调用DoModal
之前,您可以访问CFileDialog::m_pOFN
成员以获取指向OPENFILENAME
将使用的CFileDialog
的指针并直接对其进行更新,或者调用CFileDialog::GetOFN
以获得对该结构的引用并对其进行更新。
无论哪种方式,您都会发现这很有帮助:http://msdn.microsoft.com/en-US/library/ms646839(v=vs.80).aspx
关于c++ - 当文件路径很长时,为什么CFileDialog::GetNextPathName不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14903496/