c++ - 虚拟列表控件 (MFC)

标签 c++ windows user-interface mfc controls

我正在使用列表控件来显示 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/

相关文章:

c++ - 为什么经常用 FLOPS 来比较数学库?

java - 以与 tomcat 不同的用户身份启动 Java 进程

javascript - 鼠标点击对象unity 5.3 UI?

python - 在线程中运行 Python 脚本并在 GUI 中将 stdout/stderr 重定向到 wx.TextCtrl

c++ - 在C++中获取调用函数的名称、行号和文件名

c++ - 在 opencv 中录制视频仅 30 秒

c++ - 对从同一基类派生的类实现冲突检查

c++ - 在 Visual Studio 2015 中使用 XP Targeting 编译时 Windows XP 上出现 fatal error

c++ - 有没有办法使用从 GetFileInformationByHandle() 获得的文件 id(FILE_ID_DESCRIPTOR) 打开共享文件夹中的文件

带行分隔的 Java 列表