资源管理器
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 = pParentFolder -> EnumObjects(NULL, m_nTypes, & pEnum);
if (SUCCEEDED(hRes))
{
LPITEMIDLIST pidlTemp;
DWORD dwFetched = 1 ;
LPAFX_SHELLITEMINFO pItem;
// enumer

本文介绍了如何利用VS2008 SP1和VS2010中的CMfcShellTree及CMFCShellListCtrl控件快速构建资源管理器,并展示了如何通过重载EnumObjects方法来实现对文件扩展名的过滤功能。
最低0.47元/天 解锁文章
428

被折叠的 条评论
为什么被折叠?



