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

最佳答案

MFC使用大小为_MAX_PATH的默认缓冲区,这就是为什么您看到这种行为的原因。查看dlgfile.cpp以了解CFileDialog::CFileDialog的实现,您将看到m_ofn.lpstrFilem_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/

10-12 17:29