В документации также говорится, что если вы получаете код возврата 0 из «FindNextFile», вы должны вызвать «GetLastError ()», чтобы узнать, равно ли оно «ERROR_NO_MORE_FILES».Мне до сих пор не совсем ясно, что код возврата 0 означает «я нашел еще один файл, поэтому обработайте его», а не «я не нашел никаких файлов, поэтому не вызывайте другие API, иначе произойдет сбой».
Я думаю, что Microsoft нужно переосмыслить этот класс, чтобы быть «1» означает, что я нашел файл, а «0» означает, что я не нашел файл.Затем код можно записать так:
(Отказ от ответственности: НЕ ИСПОЛЬЗУЙТЕ ЭТОТ КОД! ЭТО НЕПРАВИЛЬНО! ВЫ ПРОЙДЕТЕ В КАЖДОМ ФАЙЛЕ В КАЖДЫЙ РАЗ!)
CFileFind cff;
if ( cff.FindFile(_T("*.*")) )
{
while ( cff.FindNextFile() )
{
// Use the API's here without fear of crashing...
}
cff.Close();
}
Но этоне так, как они разработали этот класс.Я предполагаю, что суть в следующем: используйте на свой страх и риск.
PS Просто чтобы прояснить, приведенный выше код не предназначен для работы этого класса.Пожалуйста, не используйте код выше !!!!