资源管理器
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 =