就是要在I:\\_work\\试验田\\里找文件个数,试验田这个文件夹下没有嵌套文件夹,我只是新建了对话框,然后给确定添加消息响应函数.void CFindfileDlg::OnOK() 
{
// TODO: Add extra validation here

CFileFind finder;

int count = 0;
BOOL bWorking = finder.FindFile("I:\\_work\\试验田\\*.txt");
count++;
int len; while (bWorking)
{

bWorking = finder.FindNextFile();
if(bWorking != 0)
{
count++;
}
len = finder.GetLength();
}

//count = count - 2; //如果输入的是*.txt或者*.ini等都能正确返回数目
//但是如果是*.*的话就要-2,出了鬼了
m_Edit1 = count;
m_Edit2 = len;
UpdateData(FALSE);

MessageBox("结果出来了");
}我感觉msdn上对findfile的返回值的说明不够清楚!
findfile是调用成功返回非0还是找到文件返回非0,如果是调用成功返回非0,那么如何为调用成功???大家帮我看看我这个程序有什么问题,我的疑惑已经写在注释里面了.大家帮帮忙,谢谢了.

解决方案 »

  1.   

    //但是如果是*.*的话就要-2,出了鬼了 
    这是因为楼主没有学过DOS,你要知道还有二个目录也是作为文件,目录其实就是文件,就是属性为“目录”而已。
    那是哪二个目录呢?就是.和..分别代表当前目录和父目录。
    其实你在DOS下或CMD下对某个目录进行Dir就可以看到前二个就是.和..你的用法是正确的:
    bWorking = finder.FindNextFile(); 
    if (bWorking) //找到下一个匹配的文件
        count++;  //就计数加1这样做没错。
      

  2.   

    因为传入"*.*"即为找查所有文件,在每个文件夹里都有[.]和[..]这两个文件,所以count中包含了这两个文件,LZ可以通过finder.IsDot()来判断找到的是否这两个文件