以下就是按键4 5 先按4可以在list中正常显示 但是按完5再安4就没反应 res值一直为0
将res= ff.FindFile(l_strDir)的地址改为直接地址如c:\\就无上述反应 求解void CWu002Dlg::OnBnClickedButton4()
{
UpdateData(true);
CFileFind ff;
CString l_strFilePath;
CString l_strFileName;
CString l_strFileExt;
CString l_strFileTitle;
CString l_strFileUrl;
CString l_strFileRoot;
CString l_strResult;
int l=0;
int l_nPoint;
int l_nLength;char buf[1000],tmp[1000];
_getcwd(buf,100);
 int si = 0;
 for(int i=0;i<1000;i++)
 {
  tmp[si]=buf[i];
  if(buf[i]=='\\')
  {
   si++;
   tmp[si]='\\';
  }
  si++;
 }
 tmp[si] = '\0';CString l_strDir = tmp; // m_strDir = "f:\\hoho";
l_strDir+="\\\\电缆\\\\*.txt;
 m_list.ResetContent();
((CListBox *)GetDlgItem(IDC_LIST1)) ->AddString(l_strDir);
BOOL res;
res= ff.FindFile(l_strDir);
 while(res)
 { m_Zs1x=res;
  res = ff.FindNextFile();
  // 不遍历子目录
  if(!ff.IsDirectory() && !ff.IsDots())
  {
   l_strFilePath = ff.GetFilePath();
   l_strFileName = ff.GetFileName();
   
   l_nPoint = l_strFileName.ReverseFind('.'); // 因为文件名中可能出现多个'.'所以用ReverseFind而不用Find?
   l_nLength = l_strFileName.GetLength();   
   l_strFileExt = l_strFileName.Right(l_nLength - l_nPoint - 1);
   
   l_strFileTitle = ff.GetFileTitle();
   l_strFileUrl = ff.GetFileURL();
   l_strFileRoot = ff.GetRoot();
  ((CListBox *)GetDlgItem(IDC_LIST1)) ->AddString(ff.GetFileName());
  l_str[l]=ff.GetFilePath();l++;
  }
 }
 UpdateData(false);
 ff.Close();}
void CWu002Dlg::OnBnClickedButton5()
{UpdateData(true);
CString strcontent;
CString strFileName;
CStdioFile file;
CFileDialog savedlg( FALSE,//for save as
        "*.txt",//
        "电缆.txt", //defalut filename
        OFN_CREATEPROMPT|OFN_OVERWRITEPROMPT ,//
        "TXT Files (*.txt)|*.txt||",
        AfxGetMainWnd() );;
savedlg.m_ofn.lpstrTitle=TEXT("请保存在根目录“电缆”文件夹下,没有请自建\0");
savedlg.m_ofn.lpstrInitialDir="电缆\\*.*";
if (savedlg.DoModal() == IDOK)
{
   strFileName = savedlg.GetPathName();
   if (!file.Open (strFileName,CFile::modeCreate|CFile::modeWrite))
   {
    AfxMessageBox("Error in Creating File");
   }
   else
   {CString test;
   test.Format("%f\n%f\n%f\n%f\n",m_Z1x,m_Z1y,m_Z0x,m_Z0y); 
    file.WriteString(test);
    file.Close();
   }
}
UpdateData(false);
}

解决方案 »

  1.   

    用绝对路径,好像是调用了CFileDialog 之后修改了相对路径了
      

  2.   

    l_strDir+="\\\\电缆\\\\*.txt;
    这里写的是什么?
    另外你Debug下调试一下,看看路径对不?函数执行是否失败返回了?
      

  3.   

    你说的不正常时什么地方不正常???  list加不进去文件列表还是新文件找不到??你要说清楚啊...要是list列表不改变时对的..文件保存不在一个地方么.
      

  4.   

    就是第一次按4 list可以显示所有文件名
    但5按过后 再按4就是没反应 一开始是l_strDir+="\\电缆\\*.txt;
    但l_strDir变为f:\\a\电缆\*.txt
    list也能显示 
    l_strDir+="\\\\电缆\\\\*.txt; l_strDir变为f:\\a\\电缆\\*.txt 结果一样