Windows Search C++(MFC) Разделитель путей CFindFiles

Учитывая следующий код, мне нужно, чтобы он работал на корейской / японской 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, но не на корейской... Я даже установил разделитель пути на правильный юникод, но ничего...

РЕДАКТИРОВАТЬ: я идентифицировал ошибку, это было относительно ItemNames и ItemDisplayNames. Мне нужно искать ItemDisplayNames, но CFindFile ищет ItemName.

Я изменяю код для использования ISearchFolderItemFactory, а затем выполняю запрос AQS.

TY Ребята в любом случае!

1 ответ

Решение

Используйте обратную косую черту для разделителя пути. Независимо от текущего языка, обратный слеш задокументирован как принятый во всех случаях. Может быть, 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

Другие вопросы по тегам