环境: VS 2008
拖放控件到Dialog, ID 为IDC_TREEVIEW1
1> 设置属性: Has Buttons /Has Lines 更改为true;这样会在控件中出现“+”“-”图标,和连线。
定义CImageList 对象,在InitDialog中初始化
//xxxxDlg.h
CImageList m_ImageList;
//xxxxDlg.cpp
//funciton InitDialog
m_ImageList.Create(16,16,ILC_COLOR, 2,2); // 前两个参数表示图象的像素,此处为 16 x 16的图标,ILC_COLOR表示
//是几位的图标,第四个参数表示初始有几个图标,第五个参数表每次
// 添加时的图标个数
//加载图标
HICON icon[2]; //创建两个,
icon[0]= AfxGetApp()->LoadIcon(IDI_ICON1);
icon[1]= AfxGetApp()->LoadIcon(IDI_ICON2);// IDI_ICON1,IDI_ICON2是添加的资源ID。
m_ImageList.Add(icon[0]);
m_ImageList.Add(icon[1]); //将图标添加到CImageList
CTreeCtrl *pTree =(CTreeCtrl*) GetDlgItem(IDC_TREEVIEW1); //获取树型控件的指针
pTree.SetImageList(& m_ImageList,TVSIL_NORMAL);
//插入一个根节点
HTREEITEM hFirst = pTree ->InsertItem(TVIF_TEXT |TVIF_IMAGE |TVIF_SELECTEDIMAGE,_T("FIRST"),0,1,0,0,1,NULL,NULL); //添加内容,第一个参数表示添加的结构体中的数据有结点名字,结点图标,
//及节点被选中厚的图标,第二个参数表示节点的名字,第三个参数是节点图标
//是m_ImageList中的图标的编号,此处为编号为0的第一个图标也就是IDI_ICON1.
//第四个参数是节点被选中后的图标编号,第五个参数是节点状态,第六个参数是
//第五个参数中可用的位,第七个是lParam,暂时未知何用,
//第八个参数表示 这个节点的父节点,如果未NULL则为根节点
//第九个参数表示这个节点要插入的位置,为NULL ,表示在最后插入
//在根节点插入子节点
pTree ->InsertItem(TVIF_TEXT |TVIF_IMAGE |TVIF_SELECTEDIMAGE,_T("FIRST"),0,1,0,0,1,hFirst,NULL);
处理函数:双击树控件会自动添加处理函数
CDialogTestDlg::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
CTreeCtrl *pTree =(CTreeCtrl*) GetDlgItem(IDC_TREEVIEW1); //获取树型控件的指针
TCHAR name[31]={0};
HTREEITEM pSelected = pNMTreeView->itemNew.hItem
TV_ITEM ti;
it.mask = TVIF_HANDLE | TVIF_TEXT;
it.hItem = pSelected;
it.pszText = name;
it.cchTextMax = 30;
pTree->GetItem(& it);
CString SelectedModeName = name;
*pResult = 0;
}