关于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);
}
}
为什么有时候多选文件的时候选不上? CFileDialog自己有个存储选中的文件名和路径名的buffer, 不过默认只有256个字符长, 多选的时候所有的文件名和路径名连在一起如果长于256个字符, 多出的部分就会被无视..
用OFN_ALLOWMULTISELECT的时候用户必须自己设立足够大的buffer空间, 然后告诉CFileDialog使用用户的buffer存储选中的文件/路径名.
参考VC++ MSDN下的CFileDialog, m_ofn, lpstrFile, nMaxFile项目. 问题已经解决,谢谢楼上的.......................
页:
[1]