單文檔下 Tree控件

一、單文檔下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;
}


 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章