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时得到的数据是乱码
应该怎么样才能将这个字符串类型值保存下来??

解决方案 »

  1.   

    你的CString必须是全局的,或者new出来的
      

  2.   

    里面存储的是DWORD值,整形的当然可以存储并且被正确取出了,而对于CString来说,存储的是地址
      

  3.   

    是不是讲需要使用1个链表来记录这些需要隐藏的数据struct HideData
    {
       HTREEITEM hItem;
       CString   strData;
    }以此结构为节点来记录吗??
      

  4.   

    char* ch = new char[xxx];
    strcpy(ch, "xxx");tree.SetItemData(HTREEITEM,ch);在析构或不用的地方
    char* ch;
    ch = (char*)tree.GetItemData(HTREEITEM);
    delete []ch;
      

  5.   

    谢guo_wei() ( ) 信誉:100