CTreeView 类的使用

首先在源文件中添加下列代码:

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);
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值