怎样将指定目录的结构装入TreeView中
就像资源管理器、FlashGet、FoxMail等
请问哪里有相关教程?
谢谢。
问题点数:50、回复次数:3Top
1 楼dingsg(丁丁)回复于 2000-11-23 07:48:00 得分 5
查一下CTreeView和CTreectrl的使用!
Top
2 楼bigjim(飞翔鸟)回复于 2000-11-23 09:02:00 得分 5
可以用基本的函数_findfirst和_findnext读出目录结构,然后一项一项地添加进去。Top
3 楼sunkey(凯)回复于 2000-11-23 10:39:00 得分 40
void CDirView::AddDirs(HTREEITEM hTreeItem)
{
CFileFind ff;
CString szFilePath;
CString szCompare;
BOOL bWorking;
HTREEITEM hSubItem;
TV_INSERTSTRUCT tvInsertStruct;
char path[_MAX_PATH];
memset(&tvInsertStruct, 0, sizeof(TV_INSERTSTRUCT));
bWorking=ff.FindFile();
while(bWorking)
{
bWorking=ff.FindNextFile();
if(ff.IsDirectory())
{
szFilePath=ff.GetFileName();
tvInsertStruct.hParent=hTreeItem;
tvInsertStruct.hInsertAfter=TVI_LAST;
tvInsertStruct.item.mask=TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT | TVIF_STATE;
tvInsertStruct.item.iImage=4;
tvInsertStruct.item.iSelectedImage=4;
tvInsertStruct.item.pszText=(LPSTR)(const char *)szFilePath;
tvInsertStruct.item.stateMask|=TVIS_EXPANDED;
tvInsertStruct.item.state|=TVIS_EXPANDED;
hSubItem=GetTreeCtrl().InsertItem(&tvInsertStruct);
ASSERT(hSubItem);
if(!ff.IsDots())
{
if(_getcwd(path, _MAX_PATH) != NULL)
{
szCompare=m_szPath;
szFilePath=ff.GetFilePath();
if(szFilePath.GetLength() < szCompare.GetLength())
{
szCompare=szCompare.Left(szFilePath.GetLength());
if(szFilePath.CompareNoCase((LPCSTR)szCompare) == 0)
{
_chdir(szFilePath);
AddDirs(hSubItem);
_chdir(path);
}
}
}
}
}
}
ff.Close();
}Top




