精简使用MFC FindFile API失败

The*_*ere 0 c++ winapi mfc file visual-c++

我使用自定义.HMD格式对VC++ MFC应用程序中的某些数据进行二进制编码.想象一下文件夹中有多个HMD文件,我想阅读他们所有的文件名.

我偶然发现CFindFile了MFC的课程.我在项目路径中添加了一堆我的HMD文件并尝试了以下代码 -

CFileFind finder;
BOOL bWorking = finder.FindFile(_T("*.HMD"));
while (bWorking)
{
    bWorking = finder.FindNextFile();
    TRACE(_T("%s\n"), (LPCTSTR)finder.GetFileName());
}
Run Code Online (Sandbox Code Playgroud)

这段代码有效!TRACE打印项目路径中的所有HMD文件.

但是,我试图从随机目录中做同样的事情.我只是data在项目路径中创建了一个目录并将所有HMD文件移动到那里,然后再次尝试代码,如下所示.

CFileFind finder;
BOOL bWorking = finder.FindFile(_T("data\*.HMD")); // Only change is I added data to path
while (bWorking)
{
    bWorking = finder.FindNextFile();
    TRACE(_T("%s\n"), (LPCTSTR)finder.GetFileName());
}
Run Code Online (Sandbox Code Playgroud)

但是,这个无法读取文件名.finder.FindNextFile()false

有人可以告诉我如何修复我对CFindFile的使用,以便我可以从任何随机目录中读取文件吗?

PS我正在使用MultiByte字符集.

Dav*_*nan 5

你需要转义反斜杠字符.代替

"data\*.HMD"
Run Code Online (Sandbox Code Playgroud)

使用

"data\\*.HMD"
Run Code Online (Sandbox Code Playgroud)