编译环境:VC++6.0我在做一个记录用户选择文件路径的程序.我想将用户所选择文件的路径放在一个记事本里.因此我选择了CFileDialog()这个函数CFileDialog dlg(TRUE, NULL, NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT |OFN_ALLOWMULTISELECT,"All Files(*.*)|*.*||");
    dlg.m_ofn.lpstrFile = sBuffer;
    dlg.m_ofn.nMaxFile = MAX_PATH; 
dlg.DoModal();
POSITION pos = dlg.GetStartPosition();用户可以在这个CFileDialog里选择文件.但当我在编写记录函数的时候,我用了三种方法均无效首先我用了 方法1;CString PathNameBuffer;
CString PathName;while(pos != NULL)
{
PathName = dlg.GetNextPathName(pos ); RootPos = PathName.ReverseFind('\\');
             StripPathName = PathName.Left(RootPos );
StripPathName = StripPathName + Txt_File_STR; StrCat(PathNameBuffer, (LPTSTR)(LPCTSTR)PathName );
StrCat(PathNameBuffer, Enter );
} if((FilePointer = fopen("E:\note.txt","w"))==NULL)                   
{
AfxMessageBox("Can not to build list file!", NULL, MB_OK );
} fputs(PathNameBuffer, FilePointer );
fclose(FilePointer);我发现当选择文件的个数大于8个的时候,根本不能建立note.txt,而且也没有AfxMessageBox弹出.我以为是PathNameBuffer太小 于是换了一种方法:方法2:char PathNameBuffer[4000];
CString PathName;while(pos!=NULL)
{
PathName = dlg.GetNextPathName(pos ); RootPos = PathName.ReverseFind('\\');                     
             StripPathName = PathName.Left(RootPos );
StripPathName = StripPathName + Txt_File_STR;    

PathNameSTR = PathNameSTR + PathName + EnterChar;
}
    
if((FilePointer = fopen(StripPathName,"w"))==NULL)                   
{
AfxMessageBox("Can not to build list file!", NULL, MB_OK );
} fputs(PathNameSTR, FilePointer );
fclose(FilePointer);问题是一样的.根本不能建立note.txt,而且也没有AfxMessageBox弹出.这次我以为是fputs()不支持太长的字符
于是我又换了一个方法,每次只存储一个文件信息
方法3:while(pos!=NULL)
{
  PathName = dlg.GetNextPathName(pos );   RootPos = PathName.ReverseFind('\\');
  StripPathName = PathName.Left(RootPos );
  StripPathName = StripPathName + Txt_File_STR;
if(count == 0)
{
if((FilePointer = fopen(StripPathName,"w"))==NULL)                   
{
     AfxMessageBox("Can not to build list file!", NULL, MB_OK );
}
fputs(PathName, FilePointer );
fputs("\n",FilePointer );
count = count + 1; 
}
else
{
                  fputs(PathName, FilePointer );
   fputs("\n",FilePointer );
}
}
fclose(FilePointer );但发现问题是一样的.我倒了,晕!我觉得是不是CFileDialog()不支持选择太多的文件呀!该怎么办?麻烦各位了.

解决方案 »

  1.   

    你找找资料吧,这本身就是Bug我记得
      

  2.   

    调试没有问题,我刚验证过了,就是CFileDialog()的问题
      

  3.   

    我想不要那么轻易怀疑MFC吧,毕竟这是经过微软的那些神仙们严格调试排错的东西啊。我一时也看不出什么问题,还是结合程序前后查查看?还有我想如果把这个问题贴到MFC板块的话,你会有一些收获的。
      

  4.   

    if((FilePointer = fopen("E:\note.txt","w"))==NULL)         =>if((FilePointer = fopen("E:\\note.txt","w"))==NULL)