系统环境: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() 。

效果如下:

CMFCShellTreeCtrl和CMFCShellListCtrl快速构建资源管理器教程

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

m\_wndShellList.EnableShellContextMenu(FALSE);
          • -

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

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

void CTest\_ExplorerDlg::OnNMRClickList1(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret\_cast(pNMHDR); // TODO: 在此添加控件通知处理程序代码 CString Filename; for(int i=0; i<m\_wndShellList.GetItemCount(); i++) { if( m\_wndShellList.GetItemState(i, LVIS\_SELECTED) == LVIS\_SELECTED ) { m\_wndShellList.GetItemPath(Filename,i); AfxMessageBox(Filename); } } *pResult = 0; }

效果如下:

CMFCShellTreeCtrl和CMFCShellListCtrl快速构建资源管理器教程

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

标签: 右键, 控件, CMFCShellListCtrl, True, CMFCShellTreeCtrl, wbdShellTree, 资源管理

相关文章推荐

添加新评论,含*的栏目为必填