Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1608674
  • 博文数量: 585
  • 博客积分: 14610
  • 博客等级: 上将
  • 技术积分: 7402
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-15 10:52
文章存档

2013年(5)

2012年(214)

2011年(56)

2010年(66)

2009年(44)

2008年(200)

分类: C/C++

2012-01-27 02:57:17

 CMFCShellTreeCtrl和CMFCShellListCtrl快速构建资源管理器
分类: 2.2 MFC9.0版本 1068人阅读 评论(0) 收藏 举报

系统环境:Windows 7
软件环境:Visual Studio 2008 SP1
本次目的:实现CMFCShellTreeCtrl(CBCGPShellTree )和CMFCShellListCtrl(CBCGPShellList )快速构建资源管理器

      在VS2008SP1以后的版本都可以快速的建立一个类似资源管理器的工程,或者也可以利用BCG第三库,下面以VS2008SP1版本为例说明构建资源管理器的步骤。

第一步:建立一个“基于对话框”的工程,窗体上放置一个Tree和List控件
第二步:分别为他们添加变量,然后修改声明变量那里为

CMFCShellTreeCtrl m_wbdShellTree;
CMFCShellListCtrl m_wndShellList;

第三步:在对话框初始化函数里面,添加以下代码

m_wbdShellTree.Expand(m_wbdShellTree.GetRootItem(), TVE_EXPAND);
m_wbdShellTree.SetRelatedList(&m_wndShellList);

第四步:设置List控件的属性,在面板里面设置View为Report 一定要设置这个,不然会出错,其余的属性可以设置Always Show为True,Alignment为Top;设置Tree控件的属性,Has Buttons 为True,Has Lines为True,Lines At Root为True

第五步:添加控件初始化,在APP实现文件InitInstance里面添加InitShellManager() 。

效果如下:

发现右键项会弹出上下文相关菜单,也就是跟系统的资源管理器一样弹出系统右键菜单,可以用在对话框初始化函数里面添加以下代码去除关联上下文菜单

m_wndShellList.EnableShellContextMenu(FALSE);

 

 

下面是获取当前选中项的路径和名称:

首先:为List控件右键添加事件处理消息NM_RCLICK ,在生成的函数里面添加以下代码

  1. void CTest_ExplorerDlg::OnNMRClickList1(NMHDR *pNMHDR, LRESULT *pResult)  
  2. {  
  3.     LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR);  
  4.     // TODO: 在此添加控件通知处理程序代码  
  5.     CString Filename;  
  6.     for(int i=0; i
  7.     {    
  8.         if( m_wndShellList.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED )    
  9.         {    
  10.             m_wndShellList.GetItemPath(Filename,i);  
  11.             AfxMessageBox(Filename);    
  12.         }    
  13.     }    
  14.     *pResult = 0;  
  15. }  

效果如下:

阅读(1354) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~