树视图控件的主要方法。见(P207-P211)
树视图的主要事件(Ctrl+W Message maps事件)
1、创建一个基于对话框的应用程序。
2、向对话框中添加1个树视图控件,为其添加变量m_Tree(Ctrl+W下的 Member Variable(成员变量函数))。
3、向工程导入3个ICO图标。
4、头文件中声明变量,代码如下
class CTreeDlg : public CDialog中添加下列代码
CImageList m_ImageList;
CString Text;
HTREEITEM m_Root,m_Child1,m_Child2;
5、在OnInitDialog函数中为树视图控件插入数据,代码如下:
BOOL CTreeDlg::OnInitDialog()
{
......................
// TODO: Add extra initialization here
m_ImageList.Create(16,16,ILC_MASK,4,1);
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
HICON hIcon = ::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
m_Tree.SetImageList(&m_ImageList,LVSIL_NORMAL);
m_Root = m_Tree.InsertItem("学校",0,0);
m_Child1 = m_Tree.InsertItem("一年级",1,1,m_Root);//插入节点
m_Child2 = m_Tree.InsertItem("龙马",2,2,m_Child1);
m_Child1 = m_Tree.InsertItem("二年级",1,1,m_Root);
m_Child2 = m_Tree.InsertItem("海棠",2,2,m_Child1);
m_Child2 = m_Tree.InsertItem("桃城",2,2,m_Child1);
m_Child1 = m_Tree.InsertItem("三年级",1,1,m_Root);
m_Child2 = m_Tree.InsertItem("周助",2,2,m_Child1);
m_Child2 = m_Tree.InsertItem("英二",2,2,m_Child1);
m_Child2 = m_Tree.InsertItem("河村",2,2,m_Child1);
m_Tree.Expand(m_Root,TVE_EXPAND);
}
6、处理事件(在对话框中添加事件TVN_SELCHANGED事件),在节点改变后获得节点文本,代码如下
void CTreeDlg::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
m_Root = m_Tree.GetSelectedItem();//该方法用于获得树视图控件当前选中的节点。
Text = m_Tree.GetItemText(m_Root);//改方法用于获取节点文本
*pResult = 0;
}
7、处理事件(在对话框中添加事件TVN_ENDLABELEDIT事件),在节点显示文本,代码如下
void CTreeDlg::OnEndlabeleditTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
m_Tree.SetItemText(pTVDispInfo->item.hItem,pTVDispInfo->item.pszText);//该方法用于设置节点文本。
*pResult = 0;
}