TreeCtrl的擴(kuò)展類(lèi),可以改節(jié)點(diǎn)字體顏色和背景色
類(lèi)下載:http://www.codeproject.com/treectrl/simptree.asp
其中有CSimpleTreeCtrl類(lèi)和MyNewTreeCtrl類(lèi)兩個(gè)
CSimpleTreeCtrl類(lèi)繼承自CTreeCtrl,而MyNewTreeCtrl類(lèi)繼承自CSimpleTreeCtrl類(lèi)
生成MyNewTreeCtrl的對(duì)象,加載到主面板中。
比CTreeCtrl控件好用的地方在:插入節(jié)點(diǎn)很直觀,可以改變某節(jié)點(diǎn)的顏色和背景色,可以很方便的得到父節(jié)點(diǎn)和子節(jié)點(diǎn)
getNumChildren:得到子節(jié)點(diǎn)的個(gè)數(shù)
addChild:在自己下面增加子節(jié)點(diǎn)
getChild ( int i ):得到子節(jié)點(diǎn)i
getParent():得到父節(jié)點(diǎn)
InsertItem( item, parent ):在parent后插入item
setTextColor:設(shè)置字體顏色
setBkColor:設(shè)置背景顏色
示例:
(1)
CSimpleTreeCtrl::TreeCtrlItem* item = new MyNewTreeCtrl::NewTreeCtrlItem ( name );
item->setName(name);
if( red == "true")
item->setTextColor(#ff0000);
item->setBkColor(#ffffff);
m_Tree.InsertItem(item,NULL);
(2)
CSimpleTreeCtrl::TreeCtrlItem* item = new MyNewTreeCtrl::NewTreeCtrlItem ( name );
item->setName(name);
if( god == "true")
item->setTextColor(#ff0000);
item->setBkColor(#ffffff);
m_Tree.InsertItem(item,fatherHand);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
類(lèi)下載:http://www.codeproject.com/treectrl/simptree.asp
其中有CSimpleTreeCtrl類(lèi)和MyNewTreeCtrl類(lèi)兩個(gè)
CSimpleTreeCtrl類(lèi)繼承自CTreeCtrl,而MyNewTreeCtrl類(lèi)繼承自CSimpleTreeCtrl類(lèi)
生成MyNewTreeCtrl的對(duì)象,加載到主面板中。
比CTreeCtrl控件好用的地方在:插入節(jié)點(diǎn)很直觀,可以改變某節(jié)點(diǎn)的顏色和背景色,可以很方便的得到父節(jié)點(diǎn)和子節(jié)點(diǎn)
getNumChildren:得到子節(jié)點(diǎn)的個(gè)數(shù)
addChild:在自己下面增加子節(jié)點(diǎn)
getChild ( int i ):得到子節(jié)點(diǎn)i
getParent():得到父節(jié)點(diǎn)
InsertItem( item, parent ):在parent后插入item
setTextColor:設(shè)置字體顏色
setBkColor:設(shè)置背景顏色
示例:
(1)
CSimpleTreeCtrl::TreeCtrlItem* item = new MyNewTreeCtrl::NewTreeCtrlItem ( name );
item->setName(name);
if( red == "true")
item->setTextColor(#ff0000);
item->setBkColor(#ffffff);
m_Tree.InsertItem(item,NULL);
(2)
CSimpleTreeCtrl::TreeCtrlItem* item = new MyNewTreeCtrl::NewTreeCtrlItem ( name );
item->setName(name);
if( god == "true")
item->setTextColor(#ff0000);
item->setBkColor(#ffffff);
m_Tree.InsertItem(item,fatherHand);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static char *color[]={"white","black","red","blue","yellow","cyan","purple","green"};
HICON hIcon[8];
int n;
//CImageList m_list;
m_list.Create(16,16,0,8,8);
hIcon[0]=AfxGetApp()->LoadIcon(IDI_ICON_WHITE);
hIcon[1]=AfxGetApp()->LoadIcon(IDI_ICON_BLACK);
hIcon[2]=AfxGetApp()->LoadIcon(IDI_ICON_RED);
hIcon[3]=AfxGetApp()->LoadIcon(IDI_ICON_BLUE);
hIcon[4]=AfxGetApp()->LoadIcon(IDI_ICON_YELLOW);
hIcon[5]=AfxGetApp()->LoadIcon(IDI_ICON_CYAN);
hIcon[6]=AfxGetApp()->LoadIcon(IDI_ICON_PURPLE);
hIcon[7]=AfxGetApp()->LoadIcon(IDI_ICON_GREEN);
for(n=0;n<8;n++)
m_list.Add(hIcon[n]);
////////////////////////////////////////////////////////
CTreeCtrl *pTree=(CTreeCtrl *) GetDlgItem(IDC_TREE);
pTree->SetImageList(&m_list,TVSIL_NORMAL); //設(shè)置圖片列表
TV_INSERTSTRUCT tvinsert; //創(chuàng)建待加入的TV_INSERTSTRUCT的結(jié)構(gòu)
tvinsert.hParent=NULL; //無(wú)父節(jié)點(diǎn)
tvinsert.hInsertAfter=TVI_LAST; //插入到本層最后
tvinsert.item.mask=TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_TEXT;
//掩碼,圖標(biāo)、選選中圖標(biāo)、文字
tvinsert.item.hItem=NULL;//句柄為空
tvinsert.item.state=0; //狀態(tài)
tvinsert.item.stateMask=0;//狀態(tài)為掩碼
tvinsert.item.cchTextMax=6;//最大文字長(zhǎng)度
tvinsert.item.iSelectedImage=1;//選中圖標(biāo)索引
tvinsert.item.cChildren=0; //唯有子節(jié)點(diǎn)
tvinsert.item.lParam=0; //自定義數(shù)據(jù)
pTree->SetBkColor(#383838);
pTree->SetTextColor(#dedede);
//創(chuàng)建第一層
tvinsert.item.iImage=5; //一般圖標(biāo)
tvinsert.item.pszText="father";//插入第一層的一個(gè)節(jié)點(diǎn)“father”
HTREEITEM hDad=pTree->InsertItem(&tvinsert);
tvinsert.item.pszText="mother";//插入第一層的第二個(gè)節(jié)點(diǎn)“mother”
HTREEITEM hMom=pTree->InsertItem(&tvinsert);
//創(chuàng)建第二層
tvinsert.hParent=hDad; //父節(jié)點(diǎn)為"father"
tvinsert.item.iImage=3; //一般圖標(biāo)
tvinsert.item.pszText="david"; // 插入第二層father的第一個(gè)節(jié)點(diǎn)son
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText="lili"; // 插入第二層father的第一個(gè)節(jié)點(diǎn)son
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText="kate"; // 插入第二層father的第一個(gè)節(jié)點(diǎn)son
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText="jime"; // 插入第二層father的第一個(gè)節(jié)點(diǎn)son
pTree->InsertItem(&tvinsert);
tvinsert.hParent=hMom; //父節(jié)點(diǎn)為hMom
tvinsert.item.iImage=4; //
tvinsert.item.pszText="david"; // 插入第二層mother的第一個(gè)節(jié)點(diǎn)son
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText="lili"; // 插入第二層mother的第一個(gè)節(jié)點(diǎn)son
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText="kate"; // 插入第二層mother的第一個(gè)節(jié)點(diǎn)son
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText="jime"; // 插入第二層mother的第一個(gè)節(jié)點(diǎn)son
HTREEITEM hOther=pTree->InsertItem(&tvinsert);
//創(chuàng)建第三層
tvinsert.hParent=hOther; //父節(jié)點(diǎn)為jime
tvinsert.item.iImage=7;
tvinsert.item.pszText="tom"; // 插入第二層hOther的第一個(gè)節(jié)點(diǎn)tom
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText="baidi"; // 插入第二層hOther的第一個(gè)節(jié)點(diǎn)baidu
pTree->InsertItem(&tvinsert);