当前位置:编程问答 > VC++ >

VC++中怎样在指定的TreeCtrl节点中添加子节点?

问题:

比如有下面结构的TreeCtrl:

|

+----水果

+----五谷

想在水果节点下添加“香蕉”子节点,在VC++中怎样编程?

追问:我的那个结构不是在创建时就加入子节点的,而是在后来才加入的。也就是说上面的那个树是一开始就有的,然后在其他函数中向那个添加一个新的子节点。
答案:

CTreeCtrl* pCtrl = (CTreeCtrl*) GetDlgItem(IDC_TREE1);
ASSERT(pCtrl != NULL);

// Insert a root item using the structure. We must
// initialize a TVINSERTSTRUCT structure and pass its
// address to the call.

TVINSERTSTRUCT tvInsert; // 这是定义了一个父节点
tvInsert.hParent = NULL;
tvInsert.hInsertAfter = NULL;
tvInsert.item.mask = TVIF_TEXT;
tvInsert.item.pszText = _T("United States");

HTREEITEM hCountry = pCtrl->InsertItem(&tvInsert); // 插入父节点,记住前面这个hCountry 下面又把它作为了父节点

HTREEITEM hPA = pCtrl->InsertItem(TVIF_TEXT,
_T("Pennsylvania"), 0, 0, 0, 0, 0, hCountry, NULL); //这里插入一个hCountry 的子节点

HTREEITEM hWA = pCtrl->InsertItem(_T("Washington"), // 这里又插入一个hCountry 的子节点并且放在hPA的后面(是同一个辈分的)
0, 0, hCountry, hPA);

pCtrl->InsertItem(_T("Pittsburgh"), hPA, TVI_SORT); // 这里连续插入了三个hPA的子节点
pCtrl->InsertItem(_T("Harrisburg"), hPA, TVI_SORT);
pCtrl->InsertItem(_T("Altoona"), hPA, TVI_SORT);

pCtrl->InsertItem(_T("Seattle"), hWA, TVI_SORT); //这里插入了3个hWA的子节点
pCtrl->InsertItem(_T("Kalaloch"), hWA, TVI_SORT);
pCtrl->InsertItem(_T("Yakima"), hWA, TVI_SORT);

根据上面的方法,你可以插入自己的节点了

下面给你函数原型看看

HTREEITEM InsertItem( LPTVINSERTSTRUCT lpInsertStruct );HTREEITEM InsertItem( UINT nMask, LPCTSTR lpszItem, int nImage, int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam, HTREEITEM hParent, HTREEITEM hInsertAfter );HTREEITEM InsertItem( LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST );HTREEITEM InsertItem( LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);

上一个:串口通信 用rs232数据线 vc++实现
下一个:VC++问题:CDialog()是干什么用的?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,