📄 advfiletree.cpp
字号:
#include "stdafx.h"
#include "plxc.h"
#include "AdvFileTree.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CAdvFileTree::CAdvFileTree()
{
isImaged = FALSE;
m_imageList = NULL;
m_imageList = new CImageList();
ASSERT_VALID(m_imageList);
}
CAdvFileTree::~CAdvFileTree()
{
delete m_imageList;
}
BEGIN_MESSAGE_MAP(CAdvFileTree, CTreeCtrl)
//{{AFX_MSG_MAP(CAdvFileTree)
ON_NOTIFY_REFLECT(TVN_DELETEITEM, OnDeleteitem)
ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CAdvFileTree::AddItem(LPCTSTR filePath,BOOL isRoot)
{
if(!CheckFileName(filePath))
return;
if(!isImaged)
{
m_imageList->Create(16,16,ILC_COLOR32 | ILC_MASK,8,1);
m_imageList->SetBkColor(CLR_NONE);
m_imageList->Add(::AfxGetApp()->LoadIcon(IDI_PROJECTICON));
m_imageList->Add(::AfxGetApp()->LoadIcon(IDI_FILEICON));
SetImageList(m_imageList,LVSIL_NORMAL);
isImaged = TRUE;
}
if(isRoot)
{
rootItem = InsertItem(_T("Workspace"),0,0);
LPDATA pData = new DATA;
pData->strText = _T("Workspace");
this->SetItemData(rootItem,(DWORD)pData);
}else
{
CString textBuffer(filePath);
int nStart = textBuffer.GetLength() - textBuffer.ReverseFind('\\');
CString name = textBuffer.Right(nStart - 1);
HTREEITEM temp = InsertItem(name,1,1,rootItem);
LPDATA pData = new DATA;
ASSERT(pData != NULL);
pData->strText = CString(filePath);
SetItemData(temp,(DWORD)pData);
}
Expand(rootItem,TVE_EXPAND);
}
void CAdvFileTree::OnDeleteitem(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
HTREEITEM temp = pNMTreeView->itemOld.hItem;
LPDATA pData = (LPDATA)GetItemData(temp);
ASSERT(pData != NULL);
delete pData;
*pResult = 0;
}
#include "MainFrm.h"
void CAdvFileTree::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult)
{
HTREEITEM temp = this->GetSelectedItem();
LPDATA pData =(LPDATA)GetItemData(temp);
ASSERT(pData != NULL);
if(pData->strText == _T("Workspace"))
return;
AfxGetApp()->OpenDocumentFile(pData->strText);
CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd();
ASSERT_VALID(pMainFrame);
pMainFrame->m_cbEditfileName.SetWindowText(pData->strText);
*pResult = 0;
}
void CAdvFileTree::RemoveItem(LPCTSTR filePath)
{
}
bool CAdvFileTree::CheckFileName(LPCTSTR filePath)
{
HTREEITEM tempItem = GetChildItem(rootItem);
LPDATA pData = NULL;
while(tempItem != NULL)
{
pData = (LPDATA)GetItemData(tempItem);
if(pData->strText == CString(filePath))
{
return FALSE;
}
tempItem = this->GetNextItem(tempItem,TVGN_NEXT);
}
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -