我正在使用列表控件来显示 vector 中元素的表示。单击列表时,另一个控件会显示有关该元素的信息。元素的索引当前由它在控件中的索引确定,但是如果我想对结果进行排序或过滤,这将不再有效。
有人告诉我可以使用虚拟列表控件,但 MSDN 不是很友好,有人可以告诉我如何为此使用虚拟列表控件吗?
最佳答案
坦率地说 - 将数据(数据 vector 中的位置)与列表控件中数据的呈现(列表 ctrl 中的位置)联系起来是我会远离的事情。
在 MFC 中,每个控件都有一个“数据”DWORD 成员变量——在 MFC 中编码时,我总是为添加的每个项目调用“SetItemData”,并传入相关行引用的指针,例如
YourListCtrl.SetItemData((DWORDPTR)&YourData);
然后当ListCtrl项被选中时,你只要调用
DataTypeYouWant* pData = (DataTypeYouWant*)(YourListCtrl.GetItemData(indexofselecteditem));
或者类似的东西。
或者 - 如果您不想使用指针 - 将项目的索引保存在您行的项目数据中的原始 vector 中(只需将其传递到上面的 fns)。
关于c++ - 虚拟列表控件 (MFC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/187421/