目的:
我希望在tree上显示学生的姓名,当用户点击某个姓名节点时,在另一个文本框上显示出学生的班级等信息。
问题:
我在initial tree 的时候,如何把班级等信息写进去,我查msdn,发现了SetItemData(hItem, (DWORD) hItem);可以设置与Item相关的信息,可是我怎么把一个CSting的信息设置进去呢 ?

解决方案 »

  1.   

    struct Info
    {
        char* name;
        int age;
    }struct Info *pStudent = new Info;
    SetItemData(hItem,(DWORD)pStudent);最后记得释放
    delete pStudent;
    pStudent = NULL;
      

  2.   

    如果 我的name, age 是另一个类的成员变量,我是否可以
    CStudent *pStudent = new CStudent ;
    SetItemData(hItem,(DWORD)CStudent); (应该没问题吧?)
    当我想要得到name的时候 ,我写成
    HTREEITEM hSelectedNode = m_TreeCtrl.GetSelectedItem();
    CStudent *pStudent = m_TreeCtrl.GetItemData(hSelectedNode);编译错误说error C2440: 'initializing' : cannot convert from 'DWORD_PTR' to CStudent *' 为什么呢?
      

  3.   

    CStudent *pStudent = (CStudent*)m_TreeCtrl.GetItemData(hSelectedNode);
      

  4.   

    个人觉得最简单的方式是存放在data区存放一个指针数据
    而这个指针指向你真正需要存放的内容地址所以其实树结构的任一节点可以存放足够多的信息吧