TreeCtrl的扩展类,可以改节点字体颜色和背景色
类下载:http://www.codeproject.com/treectrl/simptree.asp 其中有CSimpleTreeCtrl类和MyNewTreeCtrl类两个 CSimpleTreeCtrl类继承自CTreeCtrl,而MyNewTreeCtrl类继承自CSimpleTreeCtrl类 生成MyNewTreeCtrl的对象,加载到主面板中。 比CTreeCtrl控件好用的地方在:插入节点很直观,可以改变某节点的颜色和背景色,可以很方便的得到父节点和子节点 getNumChildren:得到子节点的个数 addChild:在自己下面增加子节点 getChild ( int i ):得到子节点i getParent():得到父节点 InsertItem( item, parent ):在parent后插入item setTextColor:设置字体颜色 setBkColor:设置背景颜色 示例: (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); //设置图片列表
TV_INSERTSTRUCT tvinsert; //创建待加入的TV_INSERTSTRUCT的结构
tvinsert.hParent=NULL; //无父节点
tvinsert.hInsertAfter=TVI_LAST; //插入到本层最后
tvinsert.item.mask=TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_TEXT;
//掩码,图标、选选中图标、文字
tvinsert.item.hItem=NULL;//句柄为空
tvinsert.item.state=0; //状态
tvinsert.item.stateMask=0;//状态为掩码
tvinsert.item.cchTextMax=6;//最大文字长度
tvinsert.item.iSelectedImage=1;//选中图标索引
tvinsert.item.cChildren=0; //唯有子节点
tvinsert.item.lParam=0; //自定义数据
pTree->SetBkColor(#383838);
pTree->SetTextColor(#dedede);
//创建第一层
tvinsert.item.iImage=5; //一般图标
tvinsert.item.pszText="father";//插入第一层的一个节点“father”
HTREEITEM hDad=pTree->InsertItem(&tvinsert);
tvinsert.item.pszText="mother";//插入第一层的第二个节点“mother”
HTREEITEM hMom=pTree->InsertItem(&tvinsert);
//创建第二层
tvinsert.hParent=hDad; //父节点为"father"
tvinsert.item.iImage=3; //一般图标
tvinsert.item.pszText="david"; // 插入第二层father的第一个节点son
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText="lili"; // 插入第二层father的第一个节点son
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText="kate"; // 插入第二层father的第一个节点son
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText="jime"; // 插入第二层father的第一个节点son
pTree->InsertItem(&tvinsert);
tvinsert.hParent=hMom; //父节点为hMom
tvinsert.item.iImage=4; //
tvinsert.item.pszText="david"; // 插入第二层mother的第一个节点son
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText="lili"; // 插入第二层mother的第一个节点son
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText="kate"; // 插入第二层mother的第一个节点son
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText="jime"; // 插入第二层mother的第一个节点son
HTREEITEM hOther=pTree->InsertItem(&tvinsert);
//创建第三层
tvinsert.hParent=hOther; //父节点为jime
tvinsert.item.iImage=7;
tvinsert.item.pszText="tom"; // 插入第二层hOther的第一个节点tom
pTree->InsertItem(&tvinsert);
tvinsert.item.pszText="baidi"; // 插入第二层hOther的第一个节点baidu
pTree->InsertItem(&tvinsert);