速进::有关 树视控件 查找节点、指向路径问题!请高人指点!不胜感激!

郑沐洋 郑沐洋 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我在利用树形控件编写资源管理器。
遇到问题如下:
如何获取E盘根目录的节点。目标路径就是“E盘根目录”,我怎么把路径转化成树形控件的节点。
如图:现在已有的资源管理器界面,如下:

现在的根节点,是指向桌面的,我想改成指向E盘根目录。运行如下图:

以上,是我的问题。初始化函数代码如下:
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);//插入根节点
// HTREEITEM hNext = GetTreeCtrl().GetNextItem(hParent,TVGN_NEXTVISIBLE);
// HTREEITEM hChild = GetTreeCtrl().GetNextItem(hNext,TVGN_NEXT);
// HTREEITEM hNext1 = GetTreeCtrl().GetNextItem(hNext1,TVGN_NEXT);
FillTreeView(lpsf, NULL, hParent);
GetTreeCtrl().Expand (hParent,TVE_EXPAND);//展开“桌面”节点
lpsf->Release ();
}
}
...全文
评论 21
收藏 已收藏
分享
返回顶部
郑沐洋
界面 15,976 成员 115,866 内容