读书人

CListCtrl,CTreeCtrl 中需要隐藏数据,

发布时间: 2012-01-19 20:57:58 作者: rapoo

CListCtrl,CTreeCtrl 中需要隐藏数据,使用SetItemData如何做?
CListCtrl list;
list.SetItemData(int,DWORD_PTR);

CTreeCtrl tree;
tree.SetItemData(HTREEITEM,DWORD_PTR);

-------------------------------------------
这2个函数中的int与HTREEITEM很好理解

如果需要隐藏的数据是 int或long型,可以直接设置

int i=100;
tree.SetItemData(HTREEITEM,100);

在使用GetItemData时可以得到这个数据是100


但是当需要隐藏的数据是CString时,
CString str = "1100 ";

tree.SetItemData(HTREEITEM,&str);

在使用GetItemData时得到的数据是乱码


应该怎么样才能将这个字符串类型值保存下来??



[解决办法]
一个是值类型,一个是引用类型
[解决办法]
char* ch = new char[xxx];
strcpy(ch, "xxx ");

tree.SetItemData(HTREEITEM,ch);

在析构或不用的地方
char* ch;
ch = (char*)tree.GetItemData(HTREEITEM);
delete []ch;

读书人网 >VC/MFC

热点推荐