void DirTreeView::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();
CTreeCtrl &Tree=GetTreeCtrl();
LPSHELLFOLDER lpsf=NULL;//IShellFolder接口
LPITEMIDLIST lpi=NULL;//ITERMIDLSIT结构体指针
HRESULT hr;
TV_ITEM tvi;
CImageList m_Image;//记录的是与树型控件关联的图像列表
SHFILEINFO sfi;//存放文件信息的结构
HIMAGELIST sys_small_icon;
sys_small_icon = (HIMAGELIST)SHGetFileInfo(NULL,0,&sfi,sizeof(sfi),
SHGFI_SYSICONINDEX|SHGFI_SMALLICON);
m_Image.Attach(sys_small_icon);
Tree.SetImageList(&m_Image,TVSIL_NORMAL);//将系统图像列表设为树控件的图象列表
m_Image.Detach ();
// 得到指向“桌面”的指针
hr=SHGetDesktopFolder(&lpsf);
SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOP,&lpi);
if (SUCCEEDED(hr))
{
Tree.DeleteAllItems();
char szBuff[MAX_PATH];//存放显示名称的缓冲区
TV_INSERTSTRUCT tvis; //向树型控件中插入节点时使用的结构
tvi.mask = TVIF_TEXT | TVIF_IMAGE |
TVIF_SELECTEDIMAGE | TVIF_CHILDREN ; //设置要插入的树节点信息
if(GetName(lpsf,lpi,SHGDN_NORMAL,szBuff)==FALSE)
return;
tvi.pszText = szBuff;//设置显示名称
GetNormalAndSelectedIcons(lpi, &tvi);
tvis.item = tvi;
tvis.hParent = TVI_ROOT;
hParent = GetTreeCtrl().InsertItem(&tvis);//插入根节点
FillTreeView(lpsf, NULL, hParent);
GetTreeCtrl().Expand (hParent,TVE_EXPAND);//展开“桌面”节点
lpsf->Release ();
}
}
错误提示:
error C2440: '=' : cannot convert from 'char [260]' to 'LPWSTR'
解决办法:
将char szBuff[MAX_PATH];//存放显示名称的缓冲区 中的char改成TCHAR 即可。