#include <map>
using namespace std
声明一个保存映射的全局或局部map 成员。
map<int, HTREEITEM>_maps
添加列表伪代码
_RecordsetPtr rs
rs.CreateInstance() ....
rs->Open(....)// 读取TB_JCU
循环变量recordset 对象,并插入树形列表
rs->MoveFirst()
while(!rs->EOF) {
int id = rs->Fileds->GetItem("id").Value
HTREEITEM hItem = tree.InsertItem(....) // 插入校区。
// 关键部分
_maps.insert(std::pair<int, HTREEITEM>(id, hItem))
rs->movenext()
}
下面插入第二张表
rs->open(....)读取TB_Profession
遍历recordset
while(!rs->EOF)
{
取father, id 两个字段
int father = rs->Fields->GetItem["father"].value
int id = rs->Fields->GetItem["id"].value
取需要插入的father HTREEITEM
HTREEITEM hFather = _maps[fahter]
插入HTREEITEM
HTREEITEM hItem = tree.InsertItem(.....)// 设定父HTRRITEM 为 hFather
// 然后将新添加的HTREEITEM 添加到map 对象
_maps[id] = hItem
}
以类似的方式将第三章表插入到树形控件
跟正常的树一样,比如前序遍历bool CMy1Dlg::preorder(HTREEITEM t)
{
if(t)
{
UpdateData(true)
m_show+=c_tree.GetItemText(t)
m_show+=_T(",")
UpdateData(false)
if(preorder(c_tree.GetNextSiblingItem(t)))
{
if(preorder(c_tree.GetChildItem(t)))
{
return true
}
}
return false
}
else
{
return true
}
}
void CMy1Dlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
m_show=_T("")
UpdateData(false)
preorder(c_tree.GetRootItem())
}
其中c_tree是树控件的变量,m_show是一个编辑框的CString变量,用来输出遍历的结果,preorder这个函数放在对话框类的中
这里的OnBnClickedButton2这个按钮事件是用来触发遍历的
如果需要源程序的话留个邮箱发给你
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)