用CMfcShellTree和CMFCShellListCtrl实现资源管理器并过滤扩展名

本文介绍了如何利用VS2008 SP1和VS2010中的CMfcShellTree及CMFCShellListCtrl控件快速构建资源管理器,并展示了如何通过重载EnumObjects方法来实现对文件扩展名的过滤功能。
摘要由CSDN通过智能技术生成

资源管理器

CMfcShellTree和CMFCShellListCtrl是VS2008 SP1和VS2010内自带的控件,用这两个控件实现资源管理器只需几行代码。  

  
  
  
CMFCShellTreeCtrl m_tree;
CMyShellListCtrl m_list;
m_tree.Create(WS_CHILD
| WS_VISIBLE | WS_BORDER | WS_HSCROLL | WS_TABSTOP | 0x4423 , CRect( 0 , 0 , 300 , 400 ), this , 1 );
m_list.Create(WS_CHILD
| WS_VISIBLE | LVS_REPORT | WS_BORDER | WS_HSCROLL | WS_TABSTOP, CRect( 300 , 0 , 700 , 400 ), this , 2 );

 

 

VS2008的话,需要加入如下初始化代码 

  
  
  
BOOL CXXXApp::InitInstance()
{
……
InitShellManager();
……
}

  

过滤扩展名

两个控件过滤扩展名的方法类似,都是重载EnumObjects。以列表控件为例,CMyShellListCtrl派生自CMFCShellListCtrl,重载EnumObjects中的代码从基类中拷贝而来,修改2个地方。 

  
  
  
HRESULT CMyShellListCtrl::EnumObjects(LPSHELLFOLDER pParentFolder, LPITEMIDLIST pidlParent)
{
    ASSERT_VALID(
this );
    ASSERT_VALID(afxShellManager);

    LPENUMIDLIST pEnum;
    HRESULT hRes
=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值