MFC树视图控件:寻找一种万无一失的数据处理方式

Posted

技术标签:

【中文标题】MFC树视图控件:寻找一种万无一失的数据处理方式【英文标题】:MFC treeview control : looking for a foolproof way to deal with data 【发布时间】:2012-07-16 11:29:57 【问题描述】:

也许我在这里做错了什么。我正在使用一个树视图控件,我用数据填充它。为此,数据(主要是整数)被转换为 CStrings。当用户点击一个项目时,我可以读取 CString,但必须解析它才能获取数据。

我多次更改数据在屏幕上的显示方式,然后一切都中断了,我需要重写解析函数。我想知道是否有更好的方法来做到这一点......

EDIT :树视图正在填充来自 std::vector 的项目。如果我可以让树视图返回向量中的索引而不是 CString ,这将非常适合我。

【问题讨论】:

【参考方案1】:

您可以使用CTreeCtrl::SetItemData 将任意数据值与树项相关联,并使用CTreeCtrl::GetItemData 检索此值。通常您使用SetItemData 来存储指向对象的指针,但在您的情况下,您可以使用它直接存储整数值。

我希望这会有所帮助!

【讨论】:

【参考方案2】:

如果您更改在树中设置/获取数据的方式,那么您将不得不更改格式化和解析它的方式。

通常情况下,你应该只有两个函数,setter 和 parser,所以这应该不是什么大问题

我认为没有办法让它真正更快或更清洁。

【讨论】:

以上是关于MFC树视图控件:寻找一种万无一失的数据处理方式的主要内容,如果未能解决你的问题,请参考以下文章

(MFC) 如果控件是私有成员,父类如何接收控件的消息?

未能加载视图状态。正在向其中加载视图状态的控件树必须与前一请求期间用于保存视图状态的控件树相匹配。例如,当以动态方式添加控件时,在回发期间添加的控件必须与在初始请求期间添加的控件的类型和位置相匹配

MFC 列表控件滚动显示额外的网格线

MFC中动态添加控件----寻找多年的秘籍,吐血推荐

MFC之树控件

我想显示最后在树控件 mfc 中检查的项目