yjm0105 阅读(864) 评论(0)

1.获取当前选择的节点名

 
CPoint point;
 GetCursorPos(&point);
// 当前鼠标坐标
 m_tree.ScreenToClient( &point);
 HTREEITEM hTest=m_tree.HitTest(point, &nFlag); 
 if(hTest)
 {
  m_tree.SelectItem(hTest);
  CString strx,str=m_tree.GetItemText(hTest);
  AfxMessageBox(str);
 }

2.TREECTRL加节点图标

step1: 创建位图资源IDB_BITMAP1、IDB_BITMAP2(假设为16x16)
step3: 添加类成员 CImageList m_ImageList;

step3: OnInitDialog()
     {
 m_imageList.Create(16, 16, ILC_COLORDDB | ILC_MASK, 0, 1);

 CBitmap bm1, bm2;
  
 bm1.LoadBitmap(IDB_BITMAP1);
 bm2.LoadBitmap(IDB_BITMAP2); 
 
 m_imageList.Add(&bm1, RGB(192, 192, 192));
 m_imageList.Add(&bm2, RGB(192, 192, 192)); 
 
 m_tree.SetImageList(&m_imageList, TVSIL_NORMAL);
    
}
step4:在插入节点时指定图标
 m_tree.InsertItem(str1,0,0,hItem1);//参数2:图标索引;参数3:选中节点时的图标索引
 m_tree.InsertItem(str2,1,1,hItem2);

3.展开具有2级子节点的树

 
HTREEITEM hc=m_tree.GetChildItem(hroot); 
 m_tree.Expand(hroot,TVE_EXPAND);
 m_tree.Expand(hc,TVE_EXPAND);
 while((hc=m_tree.GetNextItem(hc,TVGN_NEXT))!=NULL) 
  m_tree.Expand(hc,TVE_EXPAND);


4.右键编辑TREECTRL节点文本

(1)响应右键消息
void CForTestDlg::OnRclickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
    // TODO: Add your control notification handler code here
   
m_tree.ModifyStyle(NULL,TVS_EDITLABELS);    //设置编辑风格
    HTREEITEM hItem=m_tree.GetSelectedItem();
    m_tree.EditLabel(hItem);

    *pResult = 0;
}
(2)响应TVN_BEGINLABELEDIT消息
void CForTestDlg::OnEndlabeleditTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
    TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
    // TODO: Add your control notification handler code here
   
if(pTVDispInfo->item.pszText!=NULL)        //未取消编辑
        m_tree.SetItemText(pTVDispInfo->item.hItem,pTVDispInfo->item.pszText);

    *pResult = 0;
}
(3)
void CForTestDlg::OnOK()

     SetFocus(); //响应ENTER键
     return;
}


发表评论
切换编辑模式