我在树形控件CTreeCtrl的结点中绑定了自己定义的结构变量,跟踪发现,
SetItemData(Item_parm,(DWORD)ItemData);
CString a;
a.Format("%s",ItemData->nodText);
AfxMessageBox(a);
a能显示我绑定的字符串值。但我用
MyStru * ItemData ;
HTREEITEM SelItem;
SelItem=m_MyTree.GetSelectedItem(); 
ItemData=(MyStru *)m_MyTree.GetItemData(SelItem); //运行到这一句时退出。在最后一句时程序报错说该内存不能read,终止退出,请问该怎样修改?

解决方案 »

  1.   

    是不是SelItem返回是NULL啊?还有就是你之间保证对每一个Item都set了一个MyStru结构的地址?
      

  2.   

    如果需要通过SetItemData保存结构体,必须是保存非栈内结构体的指针并提醒一下:在SetItemData后不能释放该指针,在有项被删除前或该控件销毁前必须通过GetItemData获取指针并释放内存
      

  3.   

    哈哈, jingyad,谢谢你提醒我,确实是漏掉了一级节点
    也谢谢另外两位的捧场