一、單文檔下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()
{
CView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
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;
}