nFile=0;
CFileDialog dlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT); if( dlg.DoModal() == IDOK )
{
POSITION position=dlg.GetStartPosition(); //获取选择的文件个数 while( position )
{
if( nFile>1 ) break;
nFile++;
}
}
CFileDialog dlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT); if( dlg.DoModal() == IDOK )
{
POSITION position=dlg.GetStartPosition(); //获取选择的文件个数 while( position )
{
if( nFile>1 ) break;
nFile++;
}
}
CFileDialog dlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT);
if( dlg.DoModal() == IDOK )
{
POSITION position=dlg.GetStartPosition();
while( position )
{
strFileName[nFile++]=dlg.GetNextPathName(position);
if( nFile>2 ) break;
}但是,就是这段代码,编译无错,运行时,一旦选3个以上的文件,就错误,好像这个break语句并没起作用。
{
// TODO: Add your control notification handler code here
CString strFileName[3];
int nFile=0;
CFileDialog dlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT);
if( dlg.DoModal() == IDOK )
{
POSITION position=dlg.GetStartPosition();
while( position )
{
strFileName[nFile++]=dlg.GetNextPathName(position);
if( nFile>2 ) break;
}
}
}
{
if( nFile<3 )
{
strFileName[nFile]=dlg.GetNextPathName( position );
} else
{
dlg.GetNextPathName( position );
} nFile++;
}
返回的button id你确认是IDOK吗,很奇怪
{
strFileName[nFile]=dlg.GetNextPathName( position );
--------------------------------------
从你上述代码成功来看,问题很明显是strFileName越界!
strFileName[nFile++]=dlg.GetNextPathName(position);
仔细想想逻辑。
if( dlg.DoModal() == IDOK )
{
POSITION position=dlg.GetStartPosition();
while( nFile<3)
{
strFileName[nFile++]=dlg.GetNextPathName(position);
}
}