QQ登录

只需一步,快速开始

上位机MFC树状控件显示目录文件夹功能

[ 复制链接 ]

上位机MFC树状控件显示目录文件夹功能

上位机MFC树状控件显示目录文件夹功能

例程使用树状控件显示出指定目录 全部文件夹的功能。
效果如上图。
关键代码为:
  1. DWORD dwStyle = GetWindowLong(m_tree.m_hWnd,GWL_STYLE);
  2.         dwStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;
  3.         SetWindowLong(m_tree.m_hWnd,GWL_STYLE,dwStyle);
  4.     m_hRoot = m_tree.InsertItem("我的电脑");
  5.         GetLogicalDrives(m_hRoot);
  6.         GetDriveDir(m_hRoot);
  7.         m_tree.Expand(m_hRoot,TVE_EXPAND);
复制代码

  1. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  2. //函数功能:获取驱动器
  3. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  4. void CTreeDlgDlg::GetLogicalDrives(HTREEITEM hParent)
  5. {
  6.     size_t szAllDriveStrings = GetLogicalDriveStrings(0,NULL);
  7.         char *pDriveStrings = new char[szAllDriveStrings + sizeof(_T(""))];
  8.         GetLogicalDriveStrings(szAllDriveStrings,pDriveStrings);
  9.         size_t szDriveString = strlen(pDriveStrings);
  10.         while(szDriveString > 0)
  11.         {
  12.                 m_tree.InsertItem(pDriveStrings,hParent);
  13.                 pDriveStrings += szDriveString + 1;
  14.                 szDriveString = strlen(pDriveStrings);
  15.         }
  16. }
  17. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  18. //函数功能:添加子项
  19. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

  20. void CTreeDlgDlg::GetDriveDir(HTREEITEM hParent)
  21. {
  22.     HTREEITEM hChild = m_tree.GetChildItem(hParent);
  23.     while(hChild)
  24.         {
  25.         CString strText = m_tree.GetItemText(hChild);
  26.                 if(strText.Right(1) != "\")
  27.                         strText += _T("\");
  28.                 strText += "*.*";
  29.                 CFileFind file;
  30.             BOOL bContinue = file.FindFile(strText);
  31.                 while(bContinue)
  32.                 {
  33.             bContinue = file.FindNextFile();
  34.                         if(file.IsDirectory() && !file.IsDots())
  35.                         m_tree.InsertItem(file.GetFileName(),hChild);
  36.                 }
  37.                 GetDriveDir(hChild);
  38.              hChild = m_tree.GetNextItem(hChild,TVGN_NEXT);

  39.         }       
  40. }

  41. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  42. //函数功能:展开事件函数
  43. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  44. void CTreeDlgDlg::OnItemexpandedTree1(NMHDR* pNMHDR, LRESULT* pResult)
  45. {
  46.         NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
  47.         // TODO: Add your control notification handler code here
  48.         TVITEM item = pNMTreeView->itemNew;
  49.         if(item.hItem == m_hRoot)
  50.                 return;
  51.        
  52.     HTREEITEM hChild = m_tree.GetChildItem(item.hItem);
  53.         while(hChild)
  54.         {
  55.                 AddSubDir(hChild);
  56.                 hChild = m_tree.GetNextItem(hChild,TVGN_NEXT);
  57.         }
  58.         *pResult = 0;
  59.        
  60. }
  61. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  62. //函数功能:获取树项目全跟径
  63. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  64. CString CTreeDlgDlg::GetFullPath(HTREEITEM hCurrent)
  65. {
  66.     CString strTemp;
  67.         CString strReturn = "";
  68.         while(hCurrent != m_hRoot)
  69.         {
  70.                 strTemp = m_tree.GetItemText(hCurrent);
  71.                 if(strTemp.Right(1) != "\")
  72.                         strTemp += "\";
  73.                 strReturn = strTemp  + strReturn;
  74.                 hCurrent = m_tree.GetParentItem(hCurrent);
  75.         }
  76.        
  77.         return strReturn;
  78. }
  79. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  80. //添加子目录
  81. //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  82. void CTreeDlgDlg::AddSubDir(HTREEITEM hParent)
  83. {
  84.     CString strPath = GetFullPath(hParent);
  85.         if(strPath.Right(1) != "\")
  86.                 strPath += "\";
  87.         strPath += "*.*";
  88.         CFileFind file;
  89.         BOOL bContinue = file.FindFile(strPath);
  90.         while(bContinue)
  91.         {
  92.                 bContinue = file.FindNextFile();
  93.                 if(file.IsDirectory() && !file.IsDots())
  94.                     m_tree.InsertItem(file.GetFileName(),hParent);
  95.         }
  96. }
复制代码
源代码下载地址:
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:上位机MFC树状控件显示目录文件夹功能.rar 
文件大小:28.94 KB  售价:1金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


  

上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例

  

经历1年的编程与录制点击进入查看


  

halcon从自学到接项目视频教程,另外再赠送全网最全资源  

  

欢迎围观我录制的一套halcon自学视频教程(进入)


  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索