梦幻神话 发表于 2005-4-21 09:43:00

关于CFileDialog的应用(多选文件).................

CString FilePath;
        CFileDialog File(true,0,0,OFN_ALLOWMULTISELECT | OFN_ENABLESIZING);
        if(File.DoModal() == IDCANCEL)
                return;
        POSITION pos = File.GetStartPosition();
        while(pos != NULL)
        {
                FilePath = File.GetNextPathName(pos);
                if(m_list.FindString(0,FilePath) == -1)
                {
                        m_list.AddString(FilePath);
                }
        }
为什么有时候多选文件的时候选不上?

pandoram 发表于 2005-4-21 12:00:00

CFileDialog自己有个存储选中的文件名和路径名的buffer, 不过默认只有256个字符长, 多选的时候所有的文件名和路径名连在一起如果长于256个字符, 多出的部分就会被无视..
用OFN_ALLOWMULTISELECT的时候用户必须自己设立足够大的buffer空间, 然后告诉CFileDialog使用用户的buffer存储选中的文件/路径名.
参考VC++ MSDN下的CFileDialog, m_ofn, lpstrFile, nMaxFile项目.

梦幻神话 发表于 2005-4-21 15:27:00

问题已经解决,谢谢楼上的.......................
页: [1]
查看完整版本: 关于CFileDialog的应用(多选文件).................