MFC CLISTCRL-为不存在的列设置子项文本?

MFC CLISTCRL-为不存在的列设置子项文本?,mfc,Mfc,如果对子项的值大于设置的列数调用SetItemText(item,subItem,string),我似乎不会得到任何错误。但是当我调用GetItemText时,我似乎没有将数据取回。我只是想检查一下这是否正确,我不能使用SetItemText作为一种更方便的方式来添加一些自定义数据-SetItemData要求您记住释放内存等等。我认为您必须求助于SetItemData方法,尽管您似乎害怕内存分配/释放。 为什么不使用自己的类(例如,CMyListCtrl)覆盖CListCtrl类,在该类中实现一

如果对子项的值大于设置的列数调用S
etItemText(item,subItem,string)
,我似乎不会得到任何错误。但是当我调用GetItemText时,我似乎没有将数据取回。我只是想检查一下这是否正确,我不能使用SetItemText作为一种更方便的方式来添加一些自定义数据-SetItemData要求您记住释放内存等等。

我认为您必须求助于
SetItemData
方法,尽管您似乎害怕内存分配/释放。

为什么不使用自己的类(例如,
CMyListCtrl
)覆盖
CListCtrl
类,在该类中实现一个
SetItemCustomData
方法,该方法为您处理所有内存问题,因此,您不必在实际的用户界面代码中处理这些问题?

您是否检查过是否可以取回文本

即使它能工作,我也绝对不会使用这种解决方案:你无法预测它在下一版本的Windows中是否还能工作。或者即使它在以前的所有版本中都有效


使用SetItemData()。。。别忘了释放记忆

当然,您还需要重写删除项时使用的方法。这显然是“正确”的答案,但在本例中,我实际做的(因为它使代码中的内容更加整洁)是添加一个零宽度列。。。我没有阻止调整列的大小,因为有时查看数据可能会有用,但我可以这样做。