📄 filetree.cpp
字号:
// FileTree.cpp : implementation file
//
#include "stdafx.h"
#include "Compress.h"
#include "FileTree.h"
#include "fileinfo.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFileTree
CFileTreeView::CFileTreeView()
{
}
CFileTreeView::~CFileTreeView()
{
}
BEGIN_MESSAGE_MAP(CFileTreeView, CCJControlBar)
//{{AFX_MSG_MAP(CFileTree)
ON_WM_CREATE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFileTree message handlers
int CFileTreeView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CCJControlBar::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
if (!m_TreeCtrl.Create(WS_VISIBLE|TVS_SHOWSELALWAYS |
TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS,
CRect(0,0,0,0),this,IDC_CTRL_FILETREE))
{
TRACE0("Unable to create file tree.\n");
return -1;
}
SetChild(&m_TreeCtrl);
// m_TreeCtrl.SetBkColor(RGB(165,203,240));
// HTREEITEM hItem;
// hItem=m_TreeCtrl.InsertItem("秦丰林1");
// hItem=m_TreeCtrl.InsertItem("秦丰林2",hItem);
// m_TreeCtrl.InsertItem("秦丰林3",hItem);
// m_TreeCtrl.InsertItem("秦丰林4",hItem);
DWORD style;
GetWindowLong(m_TreeCtrl.m_hWnd,GWL_EXSTYLE);
style|=WS_BORDER;
SetWindowLong(m_TreeCtrl.m_hWnd,GWL_EXSTYLE,style);
return 0;
}
void CFileTreeView::AddNode(LPCTSTR lpszFolder,int iIcon,int iSelectedIcon)
{
CString node,other,txt;
int i;
HTREEITEM hParent,hTreeItem;
hParent=m_TreeCtrl.GetRootItem();
other=lpszFolder;
while (!other.IsEmpty())
{
hTreeItem=m_TreeCtrl.GetChildItem(hParent);
i=other.Find('\\');
node=other.Left(i);
other.Delete(0,i+1);
while (hTreeItem)
{
txt=m_TreeCtrl.GetItemText(hTreeItem);
if (txt.CompareNoCase((LPCTSTR)node)==0) break;
hTreeItem=m_TreeCtrl.GetNextItem(hTreeItem,TVGN_NEXT);
}
if (!hTreeItem)
hParent=m_TreeCtrl.InsertItem((LPCTSTR)node,iIcon,
iSelectedIcon,hParent);
else
hParent=hTreeItem;
}
}
void CFileTreeView::LoadTree()
{
CCompressDoc *pDoc=THEAPP->m_pDoc;
if (pDoc->IsClosed()) return;
CString folder;int i;
int iIcon,iSelected;
FILEINDEXLISTNODE *p=pDoc->GetFileListRoot()->next;
iIcon=GetFileIcon(pDoc->m_lpszFileName,0,0);
m_TreeCtrl.InsertItem(pDoc->m_lpszFileName,iIcon,iIcon);
iIcon=GetFileIcon("",1,0);
iSelected=GetFileIcon("",1,1);
while (p)
{
folder=p->szFileName;
if (!p->bIsDirectory)
{
i=folder.ReverseFind('\\');
folder=folder.Left(i+1);
}
AddNode((LPCTSTR)folder,iIcon,iSelected);p=p->next;
}
}
CString CFileTreeView::GetCurFolder()
{
CString folder;
HTREEITEM hItem,hParent;
hItem=m_TreeCtrl.GetSelectedItem();
while (hParent=m_TreeCtrl.GetParentItem(hItem))
{
folder=m_TreeCtrl.GetItemText(hItem)+'\\'+folder;
hItem=hParent;
}
return folder;
}
void CFileTreeView::SetCurFolder(LPCTSTR lpszFolder)
{
CString node,other;
int i;
HTREEITEM hTree;
hTree=m_TreeCtrl.GetRootItem();
other=lpszFolder;
while (!other.IsEmpty())
{
i=other.Find('\\');
node=other.Left(i);
other.Delete(0,i+1);
hTree=m_TreeCtrl.GetChildItem(hTree);
while (m_TreeCtrl.GetItemText(hTree).CompareNoCase(node)!=0)
hTree=m_TreeCtrl.GetNextItem(hTree,TVGN_NEXT);
}
m_TreeCtrl.Select(hTree,TVGN_CARET);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -