?? foldertree.cpp
字號:
// FolderTree.cpp : implementation file
//
#include "stdafx.h"
#include "MyFolder.h"
#include "FolderTree.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFolderTree
CFolderTree::CFolderTree()
{
}
CFolderTree::~CFolderTree()
{
}
BEGIN_MESSAGE_MAP(CFolderTree, CTreeCtrl)
//{{AFX_MSG_MAP(CFolderTree)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFolderTree message handlers
void CFolderTree::FillItem(CFolder* pFolder, HTREEITEM hParentItem, BOOL bExpand/*=FALSE*/)
{
if(!pFolder)//填充結點函數
return;//pFolder為空則返回
CString strFolderName;//定義文件夾名稱變量
TV_INSERTSTRUCT TreeCtrlItem;//定義TreeCtrlItem
if (hParentItem == NULL)//如果父親結點為空
{
TreeCtrlItem.hParent = TVI_ROOT;//定義為根結點
}
else
{
TreeCtrlItem.hParent = hParentItem;//否則定義為父親結點
}
TreeCtrlItem.hInsertAfter = TVI_LAST;//最后插入結點
TreeCtrlItem.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_PARAM | TVIF_SELECTEDIMAGE;
//激活上述iImage,iSelectedImage,lParam屬性
strFolderName = pFolder->GetFolderName();//獲取文件夾名(GetFolderName為已定義函數)
TreeCtrlItem.item.pszText = strFolderName.GetBuffer(strFolderName.GetLength());//得到文件名
strFolderName.ReleaseBuffer();//釋放GetBuffer
if(hParentItem == TVI_ROOT)//如果父親結點為根結點
{
TreeCtrlItem.item.iImage = 3;//選取一個新建文件圖象(3為“工程”圖象)
TreeCtrlItem.item.iSelectedImage = 3;//選中該節點時的圖象
}
else//如果父親結點不為根結點
{
TreeCtrlItem.item.iImage = 0;//選取一個新建文件圖象(0為“文件夾”圖象)
TreeCtrlItem.item.iSelectedImage = 1;//選中該節點時的圖象(1為“打開的文件夾”圖象)
}
TreeCtrlItem.item.lParam = (LPARAM)pFolder;
hParentItem = InsertItem(&TreeCtrlItem);//插入結點
CString strFullFileName;
CString strFileName;
int nCount = 0;
int nIndex = pFolder->m_FileNameArray.GetSize();
HTREEITEM htChildItem;
while(nIndex--)
{
strFullFileName = pFolder->m_FileNameArray.GetAt(nIndex);
nCount = strFullFileName.GetLength() - strFullFileName.ReverseFind('\\')-1;
strFileName = strFullFileName.Right(nCount);
TreeCtrlItem.hParent = hParentItem;
TreeCtrlItem.item.pszText = strFileName.GetBuffer(strFileName.GetLength());
strFullFileName.ReleaseBuffer();
TreeCtrlItem.item.iImage = 2;
TreeCtrlItem.item.iSelectedImage = 2;
TreeCtrlItem.item.lParam = (LPARAM)pFolder;
htChildItem = InsertItem(&TreeCtrlItem);
}
POSITION pos = pFolder->m_FolderList.GetHeadPosition();
while (pos != NULL)
{
pFolder = (CFolder*)pFolder->m_FolderList.GetNext(pos);
FillItem(pFolder, hParentItem);
}
if(bExpand)
Expand(hParentItem, TVE_EXPAND);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -