现在的位置: 首页 > 综合 > 正文

打开文件对话框,多选时,顺序不对

2013年08月13日 ⁄ 综合 ⁄ 共 890字 ⁄ 字号 评论关闭
用CFileDialog打开多个文件,然后把每个文件路径存在一个数组中,发现会出现一种奇怪的显现,程序如下
TCHAR *pszFile = new TCHAR[MAX_PATH * MAX_PATH];
memset(pszFile,0,sizeof(TCHAR)*MAX_PATH * MAX_PATH);
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT |OFN_ALLOWMULTISELECT|OFN_ENABLESIZING,
_T("All Files (*.*)|*.*||"),NULL);
dlg.m_ofn.lpstrFile = pszFile;
dlg.m_ofn.nMaxFile = MAX_PATH*MAX_PATH;
CSrting FileName[1000];
int NumFile;
NumFile=0;
if(dlg.DoModal()==IDOK)
{
POSITION pos=dlg.GetStartPosition();
while(pos!=NULL)
{
FileName[NumFile]=dlg.GetNextPathName(pos);
NumFile=NumFile+1;
}
}
我打开一组文件,文件名顺序分别为1,2,3,4,5,6,7
我用对话框打开文件时会出现这种情况:
1、如果我按Ctrl键顺序选中1,2,3,4,5,6,7文件,FileName中存的顺是7,1,2,3,4,5,6,最后文件7存在了FileName[0]中,这不是我希望的;
2、如果我按Ctrl键顺序选中7,6,5,4,3,2,1文件,FileName中存的顺是1,2,3,4,5,6,7;这是正确的,符合要求;
3、如果我按Ctr键用鼠标框住选中7个文件,FileName中存的顺是1,2,3,4,5,6,7;这是也是正确的,符合要求。

文件对话框的
GetStartPosition()总是指向最后选中的文件的位置?如何让它总是指向文件列表的开头的位置?

为了让文件按照一定顺序读取,可以把文件路径都取出来,再用排序法排一下序即可!

抱歉!评论已关闭.