首先在源文件中添加下列代碼:
void CMytree::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();
// TODO: 在此添加專用代碼和/或調用基類
m_ptheTree = &GetTreeCtrl();
m_ptheTree->ModifyStyle(0, TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS);
m_pImageList = new CImageList(); // 樹子節點的圖標
CWinApp* pApp=AfxGetApp();
m_pImageList->Create(16,16,ILC_COLOR8|ILC_MASK,9,9);
m_pImageList->Add(pApp->LoadIcon(IDI_MY));
m_ptheTree->SetImageList(m_pImageList, TVSIL_NORMAL);
HTREEITEM hTreeItem;
hTreeItem = m_ptheTree->InsertItem(L"我的電腦",0,0);
InitTreeView(hTreeItem);
}
再在類中添加 InitTreeView 函數,完成子項的添加:
void CMytree::InitTreeView(HTREEITEM hParent)
{
int nPos = 0;
UINT nCount = 0;
CString strDrive = L"?:\\";
DWORD dwDriveList = ::GetLogicalDrives();
CString cTmp;
while (dwDriveList)
{
if (dwDriveList & 1)
{
cTmp = strDrive;
strDrive.SetAt (0, 0x41 + nPos);
if (AddDrives(strDrive , hParent))
nCount++;
}
dwDriveList >>= 2;
nPos++;
}
return;
}
BOOL CMytree::AddDrives(CString strDrive, HTREEITEM hParent)
{
HTREEITEM hItem;
UINT nType = ::GetDriveType ((LPCTSTR) strDrive);
UINT nDrive = (UINT) strDrive[0] - 0x41;
switch (nType)
{
case DRIVE_REMOVABLE:
hItem = GetTreeCtrl().InsertItem(strDrive, 0, 0, hParent);
AddDummyNode(hItem);
break;
case DRIVE_FIXED:
hItem = GetTreeCtrl().InsertItem(strDrive, 0, 0, hParent);
AddDummyNode(hItem);
break;
case DRIVE_REMOTE:
hItem = GetTreeCtrl().InsertItem(strDrive, 0, 0, hParent);
AddDummyNode(hItem);
break;
case DRIVE_CDROM:
hItem = GetTreeCtrl().InsertItem(strDrive, 0, 0, hParent);
AddDummyNode(hItem);
break;
case DRIVE_RAMDISK:
hItem = GetTreeCtrl().InsertItem(strDrive, 0, 0, hParent);
AddDummyNode(hItem);
break;
default:
return FALSE;
}
return true;
}
void CMytree::AddDummyNode(HTREEITEM hItem)
{
GetTreeCtrl().InsertItem (L"", 0, 0, hItem);
}