QQ登录

只需一步,快速开始

87上位机VC MFC树状视图浏览全部磁盘文件

[ 复制链接 ]

87上位机VC MFC树状视图浏览全部磁盘文件

87上位机VC MFC树状视图浏览全部磁盘文件

87上位机VC MFC树状视图浏览全部磁盘文件


功能展示

用树状视图控件显示浏览我们电脑上有全部有效目录与文件的功能在开发上位机时也是时有发生的事,我们当前就实现了树状视图浏览全部磁盘文件的功能,效果如图
要点提示
我们例程使用GetLogicalDriveStrings(alldriver,driverstr)获得当前电脑全部磁盘盘符,保存在driverstr中,形式为C:\\ D:\\ E:\\;alldriver为全部盘符的总字节数由此形式获得alldriver=::GetLogicalDriveStrings(0,NULL);
另外我们处理每个节点展开前触发的消息LVN_SELECHANGED,此函数在用户选择树状结构中节点,展开子项时触发;





实现功能
1.新建基于对话框的应用程序
2.添加树状视图控件,关联变量CTreeCtrl m_Tree;再添加 CImageList m_ImageList;用于设置树状视图的图标;并进行两变量的初始化m_ImageList.Create(16,16,ILC_COLOR32|ILC_MASK,0,0);//初始化图片列表
m_Tree.SetImageList(&m_ImageList,TVSIL_NORMAL);
m_Tree.ModifyStyle(0L,TVS_HASLINES|TVS_LINESATROOT);//树状视图设置属性

3.添加一按钮控件,关联函数,实现当前电脑全部有效磁盘盘符的加载
  1. void CGkbc8Dlg::OnAdd()
  2. {
  3.         size_t alldriver=::GetLogicalDriveStrings(0,NULL);//全部驱动总字节数
  4.         _TCHAR *driverstr;
  5.         driverstr=new _TCHAR[alldriver+sizeof(_T(""))];
  6.         if(GetLogicalDriveStrings(alldriver,driverstr)!=alldriver-1)//获得全部驱动
  7.                 return ;
  8.         m_Tree.DeleteAllItems();//删除全部节点
  9.         _TCHAR *pdriverstr=driverstr;
  10.         size_t driversize=strlen(pdriverstr);
  11.         HTREEITEM disktree;
  12.         SHFILEINFO fileinfo;
  13.         int imindex;
  14.         while(driversize>0)
  15.         {SHGetFileInfo(pdriverstr,0,&fileinfo,sizeof(fileinfo),SHGFI_ICON); imindex=m_ImageList.Add(fileinfo.hIcon);
  16.                 disktree=m_Tree.InsertItem(pdriverstr,imindex,imindex,TVI_ROOT,TVI_LAST);//添加盘符为根节点
  17.                 pdriverstr+=driversize+1; driversize=strlen(pdriverstr);
  18.         }
  19. }
复制代码
  1. 4.添加m_Tree 的LVN_SELECHANGED的消息响应函数
  2. void CGkbc8Dlg::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult)
  3. {//每个节点发生变化时加载此函数
  4.         NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
  5.         HTREEITEM rootitem=m_Tree.GetSelectedItem();
  6.         if(m_Tree.GetChildItem(rootitem))//节已加载过则返回
  7.                 return;

  8.         CFileFind filefd;
  9.         HTREEITEM parent;
  10.         SHFILEINFO fileinfo;
  11.         int imindex;
  12.         parent=rootitem;
  13.         CString rootstr=m_Tree.GetItemText(rootitem);
  14.         CString temp;
  15.         CString lstr;
  16.         if(rootstr.Find("\")==2)
  17.         {
  18.                 lstr.Format("%s*.*",rootstr);
  19.         }
  20.         else
  21.         {
  22.                 CString strparent;
  23.                 while(1)
  24.                 {
  25.                         parent=m_Tree.GetParentItem(parent);
  26.                         strparent=m_Tree.GetItemText(parent);
  27.                         if(strparent.Find("\")==2)
  28.                                 goto end;
  29.                         temp+=strparent;
  30.                         temp+="\";
  31.                 }
  32. end:
  33.                 CString root=m_Tree.GetItemText(parent);
  34.                 lstr.Format("%s%s%s\\*.*",root,temp,rootstr);
  35.         }
复制代码
  1. BOOL bfinded=filefd.FindFile(lstr);
  2.         while(bfinded)
  3.         {
  4.                 bfinded=filefd.FindNextFile();
  5.                 CString filepath;
  6.                 if(filefd.IsDirectory()&&!filefd.IsDots()){
  7.                         SHGetFileInfo(filefd.GetFilePath(),0,&fileinfo,sizeof(fileinfo), SHGFI_ICON);
  8.                         imindex=m_ImageList.Add(fileinfo.hIcon);
  9.                         m_Tree.InsertItem(filefd.GetFileName(),imindex,imindex,rootitem);
  10.                 }
  11.         }
  12.         *pResult = 0;
  13. }
  14. <div style="text-align: center;"><b style="line-height: 1.5;"><font size="4">我们来演示下功能实现的整个过程</font></b></div>
复制代码
请点击此处下载

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

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

文件名称:87.上位机VC MFC树状视图浏览全部磁盘文件.rar 
文件大小:134.37 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

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