首先我们要新建 1 个项目, 在主窗口上添加 Tree 控件。
在项目中, 添加 2 个新窗口
ID 分别为: IDD_DIALOG1, IDD_DIALOG2
OnInitDialog 消息响应函数中 添加下面的代码:
m_treePages[0]=new Cdialog1;
m_treePages[1]=new Cdialog2;
//------------------------------------------
// 初始化树
//------------------------------------------
// 创建图像列表控件
CImageList *m_imagelist=new CImageList;
m_imagelist->Create(16,16,0,7,7);
m_imagelist->SetBkColor ( RGB(255,255,255) );
// 把图标载入图像列表控件
m_imagelist->Add( AfxGetApp()->LoadIcon(IDI_ICON1) ) ;
m_imagelist->Add( AfxGetApp()->LoadIcon(IDI_ICON2) ) ;
//为 m_mytree 设置一个图像列表
m_mytree.SetImageList( m_imagelist,TVSIL_NORMAL );
//设置m_mytree的背景色
m_mytree.SetBkColor(RGB(0,250,255));
// 初始化 Tree 节点
HTREEITEM root = m_mytree.InsertItem("TreeTab_demo");
m_mytree.InsertItem( "Dialog1", root );
m_mytree.InsertItem( "Dialog2", root );
m_mytree.Expand( m_mytree.GetRootItem() , TVE_EXPAND);
// 建立节点对应的Dialog
m_treePages[0]->Create(IDD_DIALOG1,this);
m_treePages[1]->Create(IDD_DIALOG2,this);
m_treePages[0]->ShowWindow(SW_SHOW);
m_treePages[1]->ShowWindow(SW_HIDE);
// 把 Dialog 移到合适位置
CRect m_rect;
GetClientRect(m_rect);
m_rect.left=200;
m_treePages[0]->MoveWindow(m_rect);
m_treePages[1]->MoveWindow(m_rect);
2. 设置 TVN_SELCHANGED 消息的响 应函数, 在此函数中根据点击的节点决定显示的窗口.
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
m_strNodeName=m_mytree.GetItemText(pNMTreeView->itemNew.hItem);
//在标题栏显示节点信息
SetWindowText( m_strNodeName );
//切换面板
if( m_strNodeName =="Dialog1")
{
m_treePages[0]->ShowWindow(SW_SHOW);
m_treePages[1]->ShowWindow(SW_HIDE);
}
else if( m_strNodeName =="Dialog2")
{
m_treePages[0]->ShowWindow(SW_HIDE);
m_treePages[1]->ShowWindow(SW_SHOW);
}