在view类添加成员变量:
private:
CTreeCtrl m_TreeCtrl;
CImageListm_ImageList;
2. 在OnCreate消息里处理创建:
m_TreeCtrl.Create(WS_VISIBLE|TVS_DISABLEDRAGDROP|WS_CHILD|WS_BORDER|TVS_HASLINES|TVS_HASBUTTONS|TVS_SHOWSELALWAYS|TVS_EDITLABELS,CRect(0,0,200,400),this,1);
m_TreeCtrl.SetTextColor(RGB(0,0,255));
m_ImageList.Create(16,16,ILC_COLOR32|ILC_MASK,0,0);
m_TreeCtrl.SetImageList(&m_ImageList,TVSIL_NORMAL);
m_TreeCtrl.ModifyStyle(0L,TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS);
for(inti=0;i<10;i++)
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1+i));
CTreeCtrl*pTreeCtl=&m_TreeCtrl;
HTREEITEMitem;
pTreeCtl->DeleteAllItems();
item=pTreeCtl->InsertItem("基本信息",0,0,TVI_ROOT);
pTreeCtl->InsertItem("员¡À工¡è信?息¡é",1,1,item);
pTreeCtl->InsertItem("固¨¬定¡§资Á¨º产¨²",2,2,item);
pTreeCtl->InsertItem("企¨®业°¦Ì结¨¢构1",3,3,item);
item=pTreeCtl->InsertItem("查¨¦询¡¥",4,4,TVI_ROOT);
pTreeCtl->InsertItem("简¨°单Ì£¤查¨¦询¡¥",5,5,item);
pTreeCtl->InsertItem("复¡ä合?查¨¦询¡¥",6,6,item);
item=pTreeCtl->InsertItem("打䨰印®?",7,7,TVI_ROOT);
pTreeCtl->InsertItem("打䨰印®?工¡è资Á¨º条¬?",8,8,item);
pTreeCtl->InsertItem("打䨰印®?报À¡§表À¨ª",9,9,item);
pTreeCtl->InsertItem("打䨰印®?查¨¦询¡¥结¨¢果?",9,9,item);
现在效果图已经出来的,下面来增加对它的操作。
1, 删除所有项
void CTreeTestView::OnTreeopreatorDeleteallitems()
{
// TODO: 在¨²此ä?添¬¨ª加¨®命¨¹令¢?处ä|理¤¨ª程¨¬序¨°代䨲码?
if(!m_TreeCtrl.DeleteAllItems())
{
MessageBox("failed to delete all items");
}
}
2, 删除选定项
void CTreeTestView::OnTreeopreatorDeleteselecteditem()
{
// TODO: 在¨²此ä?添¬¨ª加¨®命¨¹令¢?处ä|理¤¨ª程¨¬序¨°代䨲码?
HTREEITEMhItem=m_TreeCtrl.GetSelectedItem();
m_TreeCtrl.DeleteItem(hItem);
}
3, 获取选定项的文本
void CTreeTestView::OnTreeopreatorGetselectediteminfo()
{
// TODO: 在¨²此ä?添¬¨ª加¨®命¨¹令¢?处ä|理¤¨ª程¨¬序¨°代䨲码?
HTREEITEMhItem=m_TreeCtrl.GetSelectedItem();
CString strText;
strText=m_TreeCtrl.GetItemText(hItem);
MessageBox(strText);
}
4, 编辑选定项
void CTreeTestView::OnTreeopreatorEditselecteditem()
{
// TODO: 在¨²此ä?添¬¨ª加¨®命¨¹令¢?处ä|理¤¨ª程¨¬序¨°代䨲码?
// Replace the text in the label edit control, if possible.
m_TreeCtrl.ModifyStyle(NULL,TVS_EDITLABELS);//设¦¨¨置?树º¡Â形?控?件t的Ì?风¤?格?
m_TreeCtrl.EditLabel(m_TreeCtrl.GetSelectedItem());//当Ì¡À前¡ã结¨¢点Ì?进?入¨?编À¨¤辑-状Á¡ä态¬?
}
这个消息有点特殊,同时要这样做:
1. 添加消息
afx_msg voidOnEndlabeleditTree1(NMHDR*pNMHDR,LRESULT*pResult);
2. 消息映射
ON_NOTIFY(TVN_ENDLABELEDIT,1,OnEndlabeleditTree1)
3. 实现消息
void CTreeTestView::OnEndlabeleditTree1(NMHDR*pNMHDR,LRESULT*pResult)
{
TV_DISPINFO*pTVDispInfo=(TV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
CStringstrText;
m_TreeCtrl.GetEditControl()->GetWindowText(strText.GetBuffer(200),200);
m_TreeCtrl.SetItemText(m_TreeCtrl.GetSelectedItem(),strText);//设¦¨¨置?编À¨¤辑-后¨®的Ì?文?本À?为a结¨¢点Ì?
*pResult=0;
}
5, 插入新项
void CTreeTestView::OnTreeopreatorInsertitem()
{
// TODO: 在¨²此ä?添¬¨ª加¨®命¨¹令¢?处ä|理¤¨ª程¨¬序¨°代䨲码?
HTREEITEMitem;
CTreeCtrl*pTreeCtrl=&m_TreeCtrl;
item=pTreeCtrl->InsertItem("new item",rand()%10,rand()%10,TVI_ROOT);
pTreeCtrl->InsertItem("new item",1,1,item);
}
6, 修改选定项的文本
void CTreeTestView::OnTreeopreatorDynamicchangeselectedtextcontent()
{
// TODO: 在¨²此ä?添¬¨ª加¨®命¨¹令¢?处ä|理¤¨ª程¨¬序¨°代䨲码?
HTREEITEMhItem=m_TreeCtrl.GetSelectedItem();
CString strText="change item";
m_TreeCtrl.SetItemText(hItem,strText);
}
7, 响应鼠标左键双击
要响应通知消息(OnNotify):
1. 添加消息
2. afx_msg void OnDblclkTree1(NMHDR*pNMHDR,LRESULT*pResult);
3. 消息映射
ON_NOTIFY(NM_DBLCLK,1,OnDblclkTree1)//这里的1是treectrl的ID
4. 消息实现
void CTreeTestView::OnDblclkTree1(NMHDR*pNMHDR,LRESULT*pResult)
{
// TODO: Add your control notification handler code here
HTREEITEMhItem =m_TreeCtrl.GetSelectedItem();
CString strText;
strText=m_TreeCtrl.GetItemText(hItem);
MessageBox(strText);
*pResult=0;
}
微信
支付宝