MFC--本地磁盘目录树
2012-09-04 01:07:25| 分类:
C++
| 标签:
|举报
|字号大中小 订阅
//////////////////////////////////////////////////////////////////////////
///////// ***以下四个函数与遍历并显示磁盘驱动器树*** /////////////
//////////////////////////////////////////////////////////////////////////---zwh--注:获取逻辑磁盘驱动器;
void CBackupToolDlg::GetLogicalDrivers(HTREEITEM hParent)
{
DWORD szNumOfAllDriversString = GetLogicalDriveStrings(0,NULL); //返回系统中所有本地驱动器;
LPSTR pDriversString = new char[szNumOfAllDriversString+sizeof("")];
GetLogicalDriveStrings(szNumOfAllDriversString,pDriversString); //拿到所有的本地驱动器;
size_t szDriverString = strlen(pDriversString);
while (szDriverString>0)
{
m_srcTree.InsertItem(pDriversString,2,2,hParent); //插入C,D,E等本地驱动器,并未选与选中都用第3号(索引号为2的)图标;
pDriversString += szDriverString +1;
szDriverString = strlen(pDriversString);
}
}
//////////////////////////////////////////////////////////////////////////---zwh;
//////////////////////////////////////////////////////////////////////////---zwh--注:获取驱动器目录;
void CBackupToolDlg::GetDriverDir(HTREEITEM hParent)
{
HTREEITEM hChild = m_srcTree.GetChildItem(hParent); //得到子节点;
while(hChild) //得到外面的节点;
{
CString str = m_srcTree.GetItemText(hChild);
if (str.Right(1)!="\\")
{
str += "\\";
}
str += "*.*";
CFileFind file;
BOOL b = file.FindFile(str);
while (b)
{
b = file.FindNextFile();
if (file.IsDirectory()&&!file.IsDots())
{
m_srcTree.InsertItem(file.GetFileName(),0,1,hChild); //插入子文件夹;
}
}
hChild = m_srcTree.GetNextItem(hChild,TVGN_NEXT);
}
}
//////////////////////////////////////////////////////////////////////////---zwh;
//////////////////////////////////////////////////////////////////////////---zwh--注:拿到文件或文件夹的绝对路径;
CString CBackupToolDlg::GetFullPath(HTREEITEM hCurrent) //得到全路径;
{
CString strReturn,strTemp;
strReturn = "";
while(hCurrent!=m_hSrcRoot)
{
strTemp = m_srcTree.GetItemText(hCurrent);
if (strTemp.Right(1)!="\\")
{
strTemp += "\\";
}
strReturn = strTemp+strReturn;
hCurrent = m_srcTree.GetParentItem(hCurrent);
}
return strReturn;
}
//////////////////////////////////////////////////////////////////////////---zwh;
//////////////////////////////////////////////////////////////////////////---zwh--注:增加子目录树节点;
void CBackupToolDlg::AddSubDir(HTREEITEM hParent)
{
CString strPath = GetFullPath(hParent);
if (strPath.Right(1)!="\\")
{
strPath+="\\";
}
strPath+="*.*";
CFileFind file;
BOOL b = file.FindFile(strPath);
while (b)
{
b = file.FindNextFile();
if (file.IsDirectory()&&!file.IsDots())
{
m_srcTree.InsertItem(file.GetFileName(),0,1,hParent); //插入所有文件夹;
}
}
}
//////////////////////////////////////////////////////////////////////////--zwh;
评论这张
转发至微博
转发至微博
评论