Index: src/ch/DirTreeCtrl.cpp =================================================================== diff -u -N -r66e9ad9a512cec46d691cb1ba012424dc7ac8897 -r4c272b19c74694c428c943011f279ec064fbd894 --- src/ch/DirTreeCtrl.cpp (.../DirTreeCtrl.cpp) (revision 66e9ad9a512cec46d691cb1ba012424dc7ac8897) +++ src/ch/DirTreeCtrl.cpp (.../DirTreeCtrl.cpp) (revision 4c272b19c74694c428c943011f279ec064fbd894) @@ -129,38 +129,33 @@ BOOL GetName(LPSHELLFOLDER lpsf, LPITEMIDLIST lpi, DWORD dwFlags, - LPSTR lpFriendlyName) + LPTSTR lpFriendlyName) { BOOL bSuccess=TRUE; STRRET str; if (NOERROR==lpsf->GetDisplayNameOf(lpi,dwFlags, &str)) { - switch (str.uType) - { - case STRRET_WSTR: - - WideCharToMultiByte(CP_ACP, // CodePage - 0, // dwFlags - str.pOleStr, // lpWideCharStr - -1, // cchWideChar - lpFriendlyName, // lpMultiByteStr - MAX_PATH, - //sizeof(lpFriendlyName), // cchMultiByte, wrong. sizeof on a pointer, psk, psk - NULL, // lpDefaultChar, - NULL); // lpUsedDefaultChar - - break; - + switch (str.uType) + { + case STRRET_WSTR: + { + CW2T cw2t(str.pOleStr); + lstrcpy(lpFriendlyName, cw2t); + break; + } case STRRET_OFFSET: + { + lstrcpy(lpFriendlyName, (LPTSTR)lpi+str.uOffset); + break; + } - lstrcpy(lpFriendlyName, (LPSTR)lpi+str.uOffset); - break; - case STRRET_CSTR: - - lstrcpy(lpFriendlyName, (LPSTR)str.cStr); - break; + { + CA2T ca2t(str.cStr); + lstrcpy(lpFriendlyName, ca2t); + break; + } default: bSuccess = FALSE; @@ -175,8 +170,7 @@ LPITEMIDLIST GetFullyQualPidl(LPSHELLFOLDER lpsf, LPITEMIDLIST lpi) { - char szBuff[MAX_PATH]; - OLECHAR szOleChar[MAX_PATH]; + TCHAR szBuff[MAX_PATH]; LPSHELLFOLDER lpsfDeskTop; LPITEMIDLIST lpifq; ULONG ulEaten, ulAttribs; @@ -190,16 +184,10 @@ if (FAILED(hr)) return NULL; - MultiByteToWideChar(CP_ACP, - MB_PRECOMPOSED, - szBuff, - -1, - szOleChar, - sizeof(szOleChar)); - + CT2W ct2w(szBuff); hr=lpsfDeskTop->ParseDisplayName(NULL, NULL, - szOleChar, + ct2w, &ulEaten, &lpifq, &ulAttribs);