我需要帮助从WIN32_FIND_DATA获取完整路径 我的代码:
WIN32_FIND_DATA FindData;
HANDLE hFind;
hFind = FindFirstFile(L"../art/*.dds", &FindData );
if( hFind == INVALID_HANDLE_VALUE )
{
PrintCharS("Error searching directory");
return;
}
do
{
char ch[260];
char DefChar = ' ';
WideCharToMultiByte(CP_ACP, 0, FindData.cFileName, -1, ch, 260, &DefChar, NULL);
string ss(ch);
if (ch != "invalid.dds")
{
LoadFile( / Need WCHAR* that points to file \ );
}
}
while( FindNextFile(hFind, &FindData) > 0 );
我真的花了一整天时间试图解决这个问题。 但我不能得到路径(../art/*.dds)加上文件名 另外我如何检查子文件夹?或者它已经这样做了吗?
当前代码:
WIN32_FIND_DATA FindData;
HANDLE hFind;
hFind = FindFirstFile(L"../art/*.dds", &FindData );
if( hFind == INVALID_HANDLE_VALUE )
{
PrintCharS("Error searching directory");
return;
}
do
{
char ch[260];
char DefChar = ' ';
WideCharToMultiByte(CP_ACP, 0, FindData.cFileName, -1, ch, 260, &DefChar, NULL);
string ss(ch);
// Just incase they're needed
DWORD retval=0;
BOOL success;
TCHAR buffer[4096]=TEXT("");
TCHAR buf[4096]=TEXT("");
TCHAR** lppPart={NULL};
LPSTR buffeer = "";
LPSTR* lpppPart = NULL;
retval = GetFullPathNameA(ch, 4096, buffeer, lpppPart);
if (retval == 0)
{
std::exit(1);
}
else
{
LoadFile( / Expected WCHAR* \ );
}
}
while( FindNextFile(hFind, &FindData) > 0 );
答案 0 :(得分:1)
您知道您扫描的目录以及找到的该目录中的项目。附加它们以获得与原始搜索相同程度的文件名:../art/something.dds
。假设当前目录没有改变,那么如果被归结为任何原始OpenFile
调用,这应该有效。但如果您确实需要完全限定的文件名,请使用该部分名称调用GetFullPathName
。
P.S。
char ch[260];
⋮
if (ch != "invalid.dds")
无法运作。您正在比较地址,因此始终测试错误,与ch
的内容无关。