posts - 131, comments - 12, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

TreeControl使用与美化

Posted on 2013-02-28 13:41 盛胜 阅读(1450) 评论(0)  编辑 收藏 引用
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);

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理