Re: How can I enumerate directory content in MFC?
 
"Electronic75" <Electronic75@discussions.microsoft.com> ha scritto nel 
messaggio news:32B26F76-F1B6-420D-9F02-CE798989EC03@microsoft.com...
have to list directory
content and then look for names.
You may consider the following simple code I developed.
The function ListFilesInDirectory takes as input the directory path, and 
returns the list of files in the directory (using std::vector as a container 
for filenames).
You can use like this:
<code>
  CString directory = _T("C:\\SomeData");
  std::vector< CString > filenames;
  ListFilesInDirectory( directory, filenames );
  // filenames contain the list of files in input directory
</code>
ListFilesInDirectory implementation follows:
<code>
//========================================================================
// Given a directory pathname, returns the list of files (full pathname)
// present in that directory. The returned list can be empty, if the
// directory is empty.
//
//
// Note - subdirectories:
// ----------------------
// If there are subdirectories under specified directory, they are
// ignored by this function.
//
//
// Note - vector:
// --------------
// The file path list is returned in a std::vector container, so
// <vector> STL header must be #included in StdAfx.h.
//
//========================================================================
void ListFilesInDirectory(
    LPCTSTR dirName,
    std::vector< CString > & filepaths )
{
    // Check input parameters
    ASSERT( dirName != NULL );
    // Clear filename list
    filepaths.clear();
    // Object to enumerate files
    CFileFind finder;
    // Build a string using wildcards *.*,
    // to enumerate content of a directory
    CString wildcard( dirName );
    wildcard += _T("\\*.*");
    // Init the file finding job
    BOOL working = finder.FindFile( wildcard );
    // For each file that is found:
    while ( working )
    {
        // Update finder status with new file
        working = finder.FindNextFile();
        // Skip '.' and '..'
        if ( finder.IsDots() )
        {
            continue;
        }
        // Skip sub-directories
        if ( finder.IsDirectory() )
        {
            continue;
        }
        // Add file path to container
        filepaths.push_back( finder.GetFilePath() );
    }
    // Cleanup file finder
    finder.Close();
}
</code>
HTH,
Giovanni