http://www.vchelp.net/vchelp/file2002_3/CWzCombox.asp?type_id=3&class_id=1&cata_id=1&article_id=830 Store and show Tree struct in combox --------------------------------------------------------------------------------Combox and ListBox: 作者姓名: orbit 邮件地址: [email protected] 作者相关信息: 作者的自我介绍 程序下载 http://www.vchelp.net/vchelp/file2002_3/CWzCombox_demo.zip 代码下载 http://www.vchelp.net/vchelp/file2002_3/CWzCombox_src.zip 开发环境: VC6 Windows 2000 测试环境:Windows 2000 WindowsXP Windows 9X(with IE5 or later) 更新记录: 讲解: 界面图片:
部分关键代码 typedef struct tagITEMDATA { WORD wParantOriginIdx;//the root item's parent is nRootIndex WORD wOriginIdx;//Original index when first insert to listbox BYTE cType; BYTE cLevel; }ITEMDATA,*LPITEMDATA;"wParantOriginIdx" 是父节点的原始索引(即父节点被insert到combox时的索引)。由于节点的索引会随着节点的添加或删除 而改变,所以要存下来。(这个设计存在BUG)"wOriginIdx" 是节点的原始索引。"cType" 节点类型,可以用作其他用途。"cLevel" 节点的Level,子节点的Level比父节点的Level高。这个结构是整个CWzCombox 类的核心。详情和具体的注释包含在代码中。. 其他信息:
两个过程是对称的
至于文件的格式,你自己定就可以了
遍历的时候要记住每个节点的层次以及和哪个节点是父子关系
有了这些就可以组织到一个文件了如果是我实现
我会新建一个结构
struct node
{
int index;
CString indexText ;
int parentIndex;
}nod ;
node代表每个节点的一个结构,包括自己的索引值、节点的文本、父节点的索引值
就可以保存每个节点的信息了
nod * myTreeList ; 通过遍历所有节点得到总的节点数,然后就可以分配资源了
保存到文件可以按照自己得格式
比如文件头给出总的信息(总的节点数)
然后每行表示一个节点
1 第一个 0
2 第二个 1
3 第三个 2处理好保存到ini文件之后,反过来的过程就简单了
读取文件内容到结构,然后插入到tree控件中至于你最后说的添加节点之后,数据反应到文件中去,也是很容易解决的
如果添加节点,那么这个节点数据,我们首先分配一个结构给它,然后分配新的Index值
节点文本,至于parentIndex,可以通过在tree中父节点的Index值得到
最后把新分配并且赋值的结构链接到结构链表里这样的对tree控件的改动什么时候增加进文件,由你自己决定,取决于具体需要
Store and show Tree struct in combox --------------------------------------------------------------------------------Combox and ListBox: 作者姓名: orbit
邮件地址: [email protected]
作者相关信息: 作者的自我介绍 程序下载 http://www.vchelp.net/vchelp/file2002_3/CWzCombox_demo.zip
代码下载 http://www.vchelp.net/vchelp/file2002_3/CWzCombox_src.zip
开发环境: VC6 Windows 2000
测试环境:Windows 2000 WindowsXP Windows 9X(with IE5 or later) 更新记录: 讲解: 界面图片:
部分关键代码 typedef struct tagITEMDATA
{
WORD wParantOriginIdx;//the root item's parent is nRootIndex
WORD wOriginIdx;//Original index when first insert to listbox
BYTE cType;
BYTE cLevel;
}ITEMDATA,*LPITEMDATA;"wParantOriginIdx" 是父节点的原始索引(即父节点被insert到combox时的索引)。由于节点的索引会随着节点的添加或删除 而改变,所以要存下来。(这个设计存在BUG)"wOriginIdx" 是节点的原始索引。"cType" 节点类型,可以用作其他用途。"cLevel" 节点的Level,子节点的Level比父节点的Level高。这个结构是整个CWzCombox 类的核心。详情和具体的注释包含在代码中。. 其他信息: