Index: src/ch/DirTreeCtrl.cpp
===================================================================
diff -u -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);