if(!find.IsDots())
{
if(find.IsDirectory())
{
hItem=m_wndTree.InsertItem(strName,0,2,hParent);
}
else
{
hItem=m_wndTree.InsertItem(strName,1,3,hParent);
}
//保存路径
CString*pPath=newCString;
*pPath=find.GetFilePath();
m_wndTree.SetItemData(hItem,(DWORD)pPath);
}
}
find.Close();//结束查找
m_wndTree.Expand(hParent,TVE_EXPAND);//展开根节点
}
//树控件项的双击事件
voidCMFCTreeDlg::OnblclkTree1(NMHDR*pNMHDR,LRESULT*pResult)
{
HTREEITEMhCurItem=m_wndTree.GetSelectedItem();
if(hCurItem==NULL||hCurItem==m_wndTree.GetRootItem())
{
return;
}
CString*pPath=(CString*)m_wndTree.GetItemData(hCurItem);
//AfxMessageBox(*pPath);
ShowFile(*pPath,hCurItem);
*pResult=0;
}
void CMFCTreeDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_TREE1, m_wndTree);//增加树控件的关联控件变量
}
BEGIN_MESSAGE_MAP(CMFCTreeDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_NOTIFY(NM_DBLCLK, IDC_TREE1, &CMFCTreeDlg::OnblclkTree1)//双击树控件项的事件
END_MESSAGE_MAP()
//初始化树控件
void CMFCTreeDlg::InitTreeControl()
{
//1.设置图标列表
CImageList* pilNormal=new CImageList;
BOOL bs=pilNormal->Create(IDB_NORMAL,16,1,RGB(1,0,0)); //IDB_NORMAL是 bitmap资源 64 x 16
if (bs)
{
m_wndTree.SetImageList(pilNormal,TVSIL_NORMAL);
}
else
{
AfxMessageBox(L"adsfads");
}
m_wndTree.SetItemHeight(20);//设置行高
HTREEITEM hRoot=m_wndTree.InsertItem(L"C:\\",0,2);//插入根目录
ShowFile(L"c:\\",hRoot);
}
void CMFCTreeDlg::ShowFile(CString strPath,HTREEITEM hParent)
{
if (m_wndTree.ItemHasChildren(hParent))
{
return;
}
CFileFind find;
BOOL bRet=find.FindFile(strPath+"\\*.*");
while(bRet)
{
HTREEITEM hItem;
bRet=find.FindNextFileW();
CString strName=find.GetFileName();
if (!find.IsDots())
{
if (find.IsDirectory())
{
hItem=m_wndTree.InsertItem(strName,0,2,hParent);
}
else
{
hItem=m_wndTree.InsertItem(strName,1,3,hParent);
}
//保存路径
CString *pPath=new CString;
*pPath=find.GetFilePath();
m_wndTree.SetItemData(hItem,(DWORD)pPath);
}
}
find.Close();//结束查找
m_wndTree.Expand(hParent,TVE_EXPAND);//展开根节点
}
//树控件项的双击事件
void CMFCTreeDlg::OnblclkTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
HTREEITEM hCurItem=m_wndTree.GetSelectedItem();
if (hCurItem==NULL || hCurItem==m_wndTree.GetRootItem())
{
return;
}
CString* pPath=(CString*)m_wndTree.GetItemData(hCurItem);
//AfxMessageBox(*pPath);
ShowFile(*pPath,hCurItem);
*pResult = 0;
}
运行结果:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-36344-5.html
但只能从大义的角度去看