VC6向导生成资源管理器界面

  VC6向导生成资源管理器界面 收藏
一、框架生成  

 打开VC6,新建一个 MFC AppWizard(exe) 工程;

   1  在向导第一步中选择应用程序类型是"单文档",确保,在"文档/查看体系结构支持"检查框中打上对勾;

   2  在向导第二步中根据实际情况选择是否支持数据库,我这里选择不支持数据库;

   3  在向导第三步中选择不需要复合文档支持;也不需要复合文件支持;

  4  在向导第四步中默认即可;

   5 在向导第五步中选择风格是"Windows 资源管理器样式";

  6  在向导第六步中对你的选择做一下确认,可以看到左边视图的基类是CTreeView,应用程序视图的基类是CListView;

点击确定即可完成,点击运行按钮就可看到效果.

 

 

二、初始化树形视图

     1 修改LeftView.h

        在类的声明之前包含右视图的头文件,声明类的保护成员 CGldogView* m_listView以便通过tree事件对右视图进行通信;           声明类的保护成员CImageList ImgTree对树的图标进行操作;

        #include "usbdogview.h"
        class CLeftView : public CTreeView

     2 打开LeftView.c   在树形视图中添加树根、树枝和树叶;

        void CLeftView::OnInitialUpdate()
{
 CTreeView::OnInitialUpdate();
    ImgTree.Create (16,16,ILC_COLOR|ILC_MASK,3,3);//创建图标列表
 ImgTree.Add (AfxGetApp()->LoadIcon (IDR_MAINFRAME));
 ImgTree.Add (AfxGetApp()->LoadIcon (IDI_dir));

 CTreeCtrl& CtlTree=(CTreeCtrl&)GetTreeCtrl ();
 CtlTree.SetBkColor (RGB(210,230,190));
 CtlTree.SetImageList (&ImgTree,TVSIL_NORMAL);
 int i=0;
 TV_INSERTSTRUCT tvRoot;//树根
    TV_INSERTSTRUCT tvSecond;//树枝
 TV_INSERTSTRUCT tvThree;//树叶
 tvRoot.hParent=NULL;
 tvRoot.item.pszText="系统管理";
 tvRoot.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
    tvRoot.item.iImage=i;
 tvRoot.item.iSelectedImage=i;
 HTREEITEM item_root=CtlTree.InsertItem (&tvRoot);
 int ii;
 CString strSecond[2]={"2F00","3F00"};
 CString strThree[2][3]={{"0001","0002","0003"},{"001","002"}};
 for(i=0;i<2;i++)
 {
  tvSecond.hParent=item_root;
  tvSecond.item.pszText=(LPTSTR)(LPCTSTR)strSecond[i];
  tvSecond.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
        tvSecond.item.iImage=1;
     tvSecond.item.iSelectedImage=2;
  HTREEITEM item_second=CtlTree.InsertItem (&tvSecond);
  switch(i)
  {
  case 0:
   ii=3;
   break;
        case 1:
   ii=2;
   break;
  default:
   break;

  }
  for(int j=0;j<ii;j++)
  {tvThree.hParent=item_second;
  tvThree.item.pszText=(LPTSTR)(LPCTSTR)strThree[i][j];
  tvThree.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
        tvThree.item.iImage=1;
     tvThree.item.iSelectedImage=2;
     CtlTree.InsertItem (&tvThree);
  }
 }
 //设置列表视图的风格
 CtlTree.Expand(item_root,TVE_EXPAND);
 DWORD dwStyle=GetWindowLong(CtlTree.m_hWnd ,GWL_STYLE);
 dwStyle|=TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT;
 ::SetWindowLong (CtlTree.m_hWnd ,GWL_STYLE,dwStyle);
}      

 

 

三、初始化列表视图

    打开应用程序视图文件修改OnInitialUpdate()函数如下:

CListView::OnInitialUpdate();
 CListCtrl &listCtrl=(CListCtrl&)GetListCtrl();
 listCtrl.ModifyStyle (0,LVS_REPORT);
 listCtrl.ModifyStyle (LVS_EDITLABELS,0);//禁止修改列标题
 listCtrl.SetExtendedStyle (LVS_EX_FULLROWSELECT|LVS_EX_ONECLICKACTIVATE|LVS_EX_INFOTIP|LVS_EX_SUBITEMIMAGES|LVS_EX_GRIDLINES);
  listCtrl.InsertColumn (0,"文件ID",LVCFMT_LEFT,50);
 listCtrl.InsertColumn (1,"操作权限",LVCFMT_LEFT,100);
 listCtrl.InsertColumn (2,"占用空间(字节)",LVCFMT_LEFT,100);
 listCtrl.InsertColumn (3,"已用空间(字节)",LVCFMT_LEFT,100);
 listCtrl.InsertColumn (4,"空闲空间(字节)",LVCFMT_LEFT,100);
 listCtrl.InsertColumn (5,"创建时间",LVCFMT_LEFT,100);
 listCtrl.InsertColumn (6,"最近更新时间",LVCFMT_LEFT,100);
 listCtrl.InsertColumn (7,"创建者",LVCFMT_LEFT,100);

效果如下图所示:

 

 

四、树视图与列表视图的通信

     1、在右边的列表视图中添加处理左视图数据的公用方法void recievedata(CString strInfo);

     2、recievedata函数的实现

          void CUsbdogView::recievedata(CString strInfo)
{
 CListCtrl &listCtrl=(CListCtrl&)GetListCtrl();
 if(strInfo=="0001")
 { listCtrl.DeleteAllItems ();
 listCtrl.InsertItem(0,"0001");
 listCtrl.SetItemText(0,1,"r/w/d");
 listCtrl.SetItemText(0,2,"300");
 listCtrl.SetItemText(0,3,"200");
 listCtrl.SetItemText(0,4,"100");
 listCtrl.SetItemText(0,5,"2008.08.08 010302");
 listCtrl.SetItemText(0,6,"2008.08.09 231105");
 listCtrl.SetItemText(0,7,"jiadelin");
 }
  this->Invalidate (FALSE);
}


     3、在树视图中建立消息映射并调用列表视图的recievedata方法实现通信

          

 

4、实现OnSelchanged方法

     void CLeftView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
 NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
 // TODO: Add your control notification handler code here
 CTreeCtrl& CtlTree=(CTreeCtrl&)GetTreeCtrl ();
    HTREEITEM select_item=CtlTree.GetSelectedItem ();
 CString str=CtlTree.GetItemText (select_item);
 CSplitterWnd* m_wndSplitter=(CSplitterWnd*)GetParent();
    m_listView=(CUsbdogView*)m_wndSplitter->GetPane (0,1);
 m_listView->recievedata(str);
 *pResult = 0;

}

 

 

全文完.


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jiadelin/archive/2008/08/20/2799336.aspx

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值