CView动态创建CTreeCtrl
CVTreeVew的头文件
public:
CTreeCtrl m_tree; //树对象
CImageList m_image; //image链
virtual void OnInitialUpdate();//初始化信息
//消息处理函数,针对每一个item
afx_msg void OnNMDblclkTree1(NMHDR *pNMHDR, LRESULT *pResult)
void CVTreeView::OnInitialUpdate()
{
CView::OnInitialUpdate();
m_image.Create(20, 20, ILC_COLOR8, 0, 4); //创建于cTreeCtrl联系的image
m_image.Add(::LoadIconA(::AfxGetInstanceHandle(), MAKEINTRESOURCEA(IDI_ICON1)));
m_image.Add(::LoadIconA(::AfxGetInstanceHandle(), MAKEINTRESOURCEA(IDI_ICON2)));
m_image.Add(::LoadIconA(::AfxGetInstanceHandle(), MAKEINTRESOURCEA(IDI_ICON3)));
m_image.Add(::LoadIconA(::AfxGetInstanceHandle(), MAKEINTRESOURCEA(IDI_ICON4)));
//动态创建树,给出ID
在resource.h
#define IDT_TREE
m_tree.Create(WS_VISIBLE | WS_TABSTOP | WS_CHILD | WS_BORDER
| TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES
| TVS_DISABLEDRAGDROP | TVS_NOTOOLTIPS | TVS_EDITLABELS,
CRect(10, 10, 500, 500), this, 222);
//CTreeCtrl和CimageList联系
m_tree.SetImageList(&m_image, TVSIL_NORMAL);
hItem = m_pTree->InsertItem("大一", 0, 0, TVI_ROOT);
m_pTree->InsertItem("C++", 1, 1, hItem);
m_pTree->InsertItem("接口技术", 1, 1, hItem);
m_pTree->InsertItem("单片机", 1, 1 , hItem);
hItem = m_pTree->InsertItem("大二", 1, 1, TVI_ROOT);
m_pTree->InsertItem("C++", 0, 0, hItem);
m_pTree->InsertItem("接口技术", 0, 0, hItem);
m_pTree->InsertItem("单片机", 0, 0 , hItem);
hItem = m_pTree->InsertItem("大三", 2, 2, TVI_ROOT);
m_pTree->InsertItem("C++", 1, 1, hItem);
m_pTree->InsertItem("接口技术", 1, 1, hItem);
m_pTree->InsertItem("单片机", 1, 1 , hItem);
hItem = m_pTree->InsertItem("大四", 0, 0, TVI_ROOT);
m_pTree->InsertItem("C++", 2, 2, hItem);
m_pTree->InsertItem("接口技术", 2, 2, hItem);
m_pTree->InsertItem("单片机", 2, 2 , hItem);
hItem = m_pTree->InsertItem("毕业后", 3, 3, TVI_ROOT);
m_pTree->InsertItem("VS2008", 1, 1, hItem);
m_pTree->InsertItem("汇编", 1, 1, hItem);
m_pTree->InsertItem("单片机", 1, 1 , hItem);
HTREEITEM hItem = NULL;
}
//消息部分
BEGIN_MESSAGE_MAP(CVTreeView, CView)
ON_NOTIFY(NM_DBLCLK, IDT_TREE, &CVTreeView::OnNMDblclkTree1)
END_MESSGAE_MAP
void CVTreeView::OnNMDblclkTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
CString str = m_tree.GetItemText(m_tree.GetSelectedItem());
::MessageBox(NULL, str, str, 5);
}