次のコードでは、韓国語/日本語Windows上で動作する必要があります。 それはちょうどうまくいきません、なぜ私は言うことができません...Windows Search C++(MFC)CFindFilesパス区切り文字
あなたは私を助けますか?
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();
}
このコード私も正しいユニコードが、何もパス区切り...
EDITを設定アメリカンWindows上でうまく動作しますが、韓国にはない... :私は」エラーを識別したが、これはItemNamesおよびItemDisplayNamesに関連していた。 ItemDisplayNamesを検索する必要がありますが、ItemNameのCFindFileを検索する必要があります。
ISearchFolderItemFactoryを使用するようにコードを変更してから、AQSクエリを実行します。
TYみんな!
NOP!動作しません!私はすでに '/' '\\' '\' '\'を試したことがありませんトリックを行うようだ! –
@Carlos_rpg:Odd。 MFCのどのバージョン?韓国語版では、「¥」の文字の値は何ですか?例: 'printf(" 0x%X \ n "、 '\');' - MSFTによれば、パスsepはすべての場合0x5Cで、別の文字として表示されます。少なくともそれは私がそれを読む方法です。 – JimR