为CFindFile的文档指出MFC CFindFile :: FindNextFile使用
非零如果有更多的文件;零 如果找到的文件是 目录中的最后一个或发生错误。 要获得扩展的错误信息, 调用Win32函数GetLastError。 如果找到的文件是 目录中的最后一个文件,或者如果找不到匹配的文件 ,GetLastError 函数将返回ERROR_NO_MORE_FILES。
那么如果我有1个文件或0个文件,如果调用FindNextFile返回相同的值,我该如何知道?
如果找到零个文件,似乎对FindFile :: GetFilePath()的调用失败(这会无意中导致我的应用程序崩溃)。
pLog->Log(_T("Finding files in [%s]"), 1, szFilePath);
if (!oFindFile.FindFile(szFilePath, 0))
{
pLog->Log(_T("Failed to find file in directory: [%s]"),1,szDirectory);
return false;
}
bool moreFiles = true;
while(moreFiles)
{
moreFiles = oFindFile.FindNextFile();
if (oFindFile.IsDots())
{
continue;
}
CString szFileName = oFindFile.GetFilePath();
pLog->Log(_T("Found file [%s]"), 1, szFileName);
pVector->push_back(szFileName);
}
return true;
编辑
CString szFilePath = _T("C:\documents and settings\username\desktop\*.lnk");
CString szDirectory = T("C:\documents and settings\username\desktop");
嗯,好的。我正在调用这个函数。也许我在做别的事情...... – 2010-09-08 19:18:08
你能发表一些代码吗? – dwo 2010-09-08 19:19:31
当然。第一个日志语句被调用,但第二个(在if块中)未被调用。 – 2010-09-08 19:27:07