一、单文档下Tree控件的创建
/**********************************************************************/
参考:http://bbs.csdn.net/topics/350079881
CRect treeRect(x1,y1,x2,y2);
m_devTree->Create(
WS_VISIBLE|WS_CHILD|WS_BORDER|TVS_HASBUTTONS|TVS_LINESATROOT|TVS_HASLINES|TVS_DISABLEDRAGDROP,
treeRect,
视图指针,
id);
/**************************************************************************************************/
1.View类下添加成员变量:
IDC_TREE
2.资源视图中打开String Table资源,在右键菜单中选择new string,为将要创建的ListControl控件添加资源编号:
IDC_TREE
3.为创建和显示控件,在视图的初始化消息函数中添加如下代码:
void CMyView::OnInitialUpdate()
CRect rect;
GetClientRect(&rect);
m_wndTree.Create(WS_VISIBLE|WS_CHILD|WS_BORDER|TVS_HASBUTTONS|TVS_LINESATROOT|TVS_HASLINES|TVS_DISABLEDRAGDROP,
rect,
this,
IDC_TREE);
HTREEITEM hItem1A=m_wndTree.InsertItem(_T("LAYER1_A"),0,1);
m_wndTree.InsertItem(_T("LAYER2_1A"),0,1,hItem1A,TVI_LAST);
HTREEITEM hItem2_1B=m_wndTree.InsertItem(_T("LAYER2_1B"),0,1,hItem1A,TVI_LAST);
m_wndTree.InsertItem(_T("LAYER3_1A"),0,1,hItem2_1B);
m_wndTree.InsertItem(_T("LAYER3_1B"),0,1,hItem2_1B);
m_wndTree.InsertItem(_T("LAYER3_1C"),0,1,hItem2_1B);
m_wndTree.InsertItem(_T("LAYER2_1C"),0,1,hItem1A,TVI_LAST);
HTREEITEM hItem1B=m_wndTree.InsertItem(_T("LAYER1_B"),0,1);
m_wndTree.InsertItem(_T("LAYER2_2A"),0,1,hItem1B,TVI_LAST);
m_wndTree.InsertItem(_T("LAYER2_2B"),0,1,hItem1B,TVI_LAST);
m_wndTree.InsertItem(_T("LAYER2_2C"),0,1,hItem1B,TVI_LAST);
}
二、双击的响应
1.View类的头文件中添加成员变量:
HTREEITEM m_hTreeItem;
2.View类的头文件添加
//{{AFX_MSG(CTreeTestView)
afx_msg void OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
3.View类cpp文件中添加:
BEGIN_MESSAGE_MAP(CTreeTestView, CView)
//{{AFX_MSG_MAP(CTreeTestView)
ON_NOTIFY(NM_DBLCLK, IDC_TREE, OnDblClkTree) //双击相应消息
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
4.View类cpp文件中添加响应函数:
void CMyView::OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
m_hTreeItem = m_wndTree.GetSelectedItem();
CString S1 = m_wndTree.GetItemText(m_hTreeItem);
AfxMessageBox("You have selected "+S1);
*pResult = 0;
*pResult = 0;
}