MFC的我有了,用CFileFind 和 CString 的,哪位老大给个SDK里可以用的,谢谢谢谢

解决方案 »

  1.   

    FindFirstFile
    FindFirstFileEx
    FindNextFile
      

  2.   

    FindFirstFile and FindNextFile.U can search the function in msdn.
      

  3.   

    CFileFind finder;
       BOOL bWorking = finder.FindFile("*.exe");
       while (bWorking)
       {
          bWorking = finder.FindNextFile();
          cout << (LPCTSTR) finder.GetFileName() << endl;
       }
      

  4.   

    CFileFind 这个不能在SDK里用的呀。
      

  5.   


    我用过的一个程序,自己修改,因该可以的,
    ----------------------------------------------------------
    HANDLE hlocalfile;
    WIN32_FIND_DATA findd;
    char nowpath[255];
    DWORD retLen;
    FILEINFO fi;
    char findpath[255];
    strcat(findpath,"\\*.*");
    memset(&findd,0,sizeof(findd));
        
        //得到第一个文件
    if((hlocalfile=FindFirstFile( findpath,&findd))==INVALID_HANDLE_VALUE)
    return -1;
       //得到文件信息
    SHFILEINFO shfi;
    memset(&shfi,0,sizeof(shfi));
    SHGetFileInfo(findd.cFileName, 
            FILE_ATTRIBUTE_NORMAL,
    &shfi, sizeof(shfi),
    SHGFI_ICON|SHGFI_USEFILEATTRIBUTES|SHGFI_TYPENAME );
           //循环
           if (hlocalfile != INVALID_HANDLE_VALUE) 
       {
             do {
              //得到文件信息
    SHFILEINFO shfi;
    memset(&shfi,0,sizeof(shfi));
    SHGetFileInfo(findd.cFileName, 
            FILE_ATTRIBUTE_NORMAL,
    &shfi, sizeof(shfi),
    SHGFI_ICON|SHGFI_USEFILEATTRIBUTES|SHGFI_TYPENAME );
                     //如果是当前目录或父目录,跳过
    if ( ! ( strcmp( findd.cFileName, "." ) ) || ! ( strcmp( findd.cFileName, ".." ) ) )
    {
    continue;
    }
                     
     // Check if "." or "..", if not...
     // Check if its a directory.
     if ((strcmp(findd.cFileName,_T("."))!=0) && (strcmp(findd.cFileName,_T(".."))!=0))
     {
    if((findd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
    {
    char  path1[255];
    path1[0]=0;
    // 设置文件夹目录
    strcat(nowpath,"\\");
    strcat(nowpath,findd.cFileName);
    strcat(nowpath1,"\\");
    strcat(nowpath1,findd.cFileName);
        //path1 = thispath + "\\"+findd.cFileName;                  
    if(strcmp(nowpath,"..")!=0)
    // 循环调用递归
    PeerMyDirSend(s,hEvent,nowpath,nowpath1);
        //恢复初始用户选择目录
                            strcpy(nowpath,pathbak);
    strcpy(nowpath1,pathbak1);
    }
        else
    {
      //发送文件
     strcpy(fi.filename,pathbak);
     strcat(fi.filename,"\\");
     strcat(fi.filename,findd.cFileName);
     strcpy(fi.filedir,nowpath1);
     strcat(fi.filedir,"\\");
     strcat(fi.filedir,findd.cFileName);
     fi.rtolDir=false;//is file
         char filename[255];
     strcpy(fi.myfilename,findd.cFileName);
     PeerMyFileSend(s,hEvent,fi,fi.myfilename);
     //SendMyDir(s,hEvent,path1,findd.cFileName);
    }
     }
     }
     while (FindNextFile(hlocalfile, &findd));    
             // This is a MUST
             FindClose(hlocalfile); 
     //nowpath=path;
      // } 
      }
      else
      {
    if(GetLastError()==ERROR_NO_MORE_FILES)
        return -1;
      }
      

  6.   

    FILEINFO  是在哪里定义的??
      

  7.   

    我给一个简单一点的例子,你试试!    struct _finddata_t c_file;
        long hFile; if( (hFile = _findfirst( "*.aaa", &c_file )) == -1L )
       AfxMessageBox( "No files in current directory!" );
    else
    {
    if(c_file.attrib & _A_SUBDIR)
    { //子目录
    }
    else
    {   //符合条件的文件
    } while( _findnext( hFile, &c_file ) == 0 )
    {  // 遍历所有文件
    if(c_file.attrib & _A_SUBDIR)
    {
    }
    else
    {
    }
    Sleep(1);
    }    _findclose( hFile );
    }