我插入一个节点,其文本是:Local Drive (C:)
但显示出来却是这样的:(:Local Drive (C
请问这是怎么回事呢?
代码如下:void CDirTree::ListDrivers()
{//在复合框中列出驱动器。
TCHAR *chBuffer=new TCHAR[188];
GetLogicalDriveStrings(188,chBuffer);//得到逻辑驱动器
CString strDriverName;         DeleteAllItems();//Reset the content.
m_strList.RemoveAll();
SHFILEINFO   sfi; 
ZeroMemory(&sfi,sizeof(sfi));
LPITEMIDLIST pidlMyComputer = NULL;
SHGetSpecialFolderLocation(NULL, CSIDL_DRIVES, &pidlMyComputer);
SHGetFileInfo((LPCTSTR)pidlMyComputer,NULL,&sfi,sizeof(SHFILEINFO),SHGFI_DISPLAYNAME |
   SHGFI_SYSICONINDEX|SHGFI_TYPENAME|SHGFI_PIDL);
//Root is my computer.
m_hTreeRoot=InsertItem(sfi.szDisplayName,sfi.iIcon,sfi.iIcon);
TVINSERTSTRUCT tvInsert;
tvInsert.hParent = m_hTreeRoot;
tvInsert.hInsertAfter = TVI_LAST;
tvInsert.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE; for (int nCount = 0;chBuffer[nCount] || chBuffer[nCount + 1];nCount++)
{
if (chBuffer[nCount] == '\0' || chBuffer[nCount] ==':' ||chBuffer[nCount] == '\\')
continue;
else
{
strDriverName.Empty();
strDriverName=chBuffer[nCount];
strDriverName.MakeUpper();
strDriverName=strDriverName+":";
CString strDrive=strDriverName+"\\";
ZeroMemory(&sfi,sizeof(sfi));
SHGetFileInfo((LPCTSTR)strDrive,
   FILE_ATTRIBUTE_NORMAL,
   &sfi,
   sizeof(sfi),
   SHGFI_USEFILEATTRIBUTES|SHGFI_SYSICONINDEX|
   SHGFI_TYPENAME|SHGFI_DISPLAYNAME);
tvInsert.item.pszText =sfi.szDisplayName;
tvInsert.item.iImage=sfi.iIcon;
tvInsert.item.iSelectedImage=sfi.iIcon;
InsertItem(&tvInsert);
}
}
delete []chBuffer;
Expand(m_hTreeRoot,TVE_EXPAND);
}