SetItemData的基本用法:
假设ListBox关联的控件变量为 list ,类名为 Student:
我起初是这样做的:
for (int i = 0; i < stu_manage.getSize(); i++)
{
//对象必需是new出来的,而不是栈中的对象
Student *p = &stu_manage.get(i);
int nIndex = list.AddString(CString(p->getName()));
list.SetItemData(nIndex, (DWORD_PTR)p);
}
- 注:stu_manage.get(i)返回的是一个Student对象
结果list保存的对象里面没有任何值,只有乱码…
最终发现SetItemData中的 指针引用的对象必需是new出来的,而不是栈中的对象。
于是修改:
//对象必需是new出来的,而不是栈中的对象
Student temp = stu_manage.get(i);
Student *p = new Student(temp.getId(),temp.getName(),temp.getCScore(),temp.getMathScore(),temp.getSex(),temp.getAge(),temp.getAddress());
int nIndex = list.AddString(CString(p->getName()));
list.SetItemData(nIndex, (DWORD_PTR)p);
大功告成!