Windows Search C++(MFC) CFindFiles Path Separator



给定以下代码,我需要它在韩文/日文Windows SO上运行。它只是不起作用,我不知道为什么...

你们可以帮我吗?

void RecurseSearch(LPCTSTR pstr, CString serchTerm, CSimpleMap<CString,CString>* arr)
{
    CFileFind finder;
    // build a string with wildcards
    CString strWildcard;
    int code_point =  0x5c ;
    WCHAR chr = (WCHAR) code_point;
    strWildcard.Format(_T("%s%c*%s*"), pstr,chr,serchTerm);
    CString actualFolder;
    // start working for files
    BOOL bWorking = finder.FindFile(strWildcard);
    while (bWorking)
    {
        bWorking = finder.FindNextFile();
        actualFolder=finder.GetFilePath();
        // skip . and .. files; otherwise, we'd
        // recur infinitely!
        if (finder.IsDots())
            continue;
        // if it's a directory, recursively search it
        else if (finder.IsDirectory())
        {
            CString str = finder.GetFilePath();
            RecurseSearch(str, serchTerm, arr);
        }
        else
        {
            if(arr->GetSize()>200) return;
            if(arr->FindKey(finder.GetFileURL())==-1)
                arr->Add(finder.GetFileURL(),finder.GetFileURL());
        }
    }
    bWorking = finder.FindFile(pstr+(CString)chr+(CString)_T("*"));
    while(bWorking)
    {
        bWorking = finder.FindNextFile();
        actualFolder =finder.GetFilePath();
        if (!finder.IsDirectory() || finder.IsDots()) continue;
        else
        {
            RecurseSearch(actualFolder, serchTerm, arr);
        }
    }
    finder.Close();
}

此代码在美国 Windows 上运行良好,但在韩语上不起作用......我什至将路径分隔符设置为正确的 unicode,但什么都没有......

编辑:我已经确定了错误,它与ItemNames和ItemDisplayNames有关。我需要搜索 ItemDisplayNames,但 CFindFile 搜索 ItemName。

我将代码更改为使用 ISearchFolderItemFactory,然后执行 AQS 查询。

反正各位!

对路径分隔符使用反斜杠。 无论当前语言如何,反斜杠在所有情况下都记录为已接受。 可能是MFC把事情搞砸了...

这里有两个链接应该会有所帮助。

http://msdn.microsoft.com/en-us/library/dd317748(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#naming_conventions

相关内容

  • 没有找到相关文章

最新更新