好的,所以我正在遗留 MFC 应用程序中实现 CListCtrl 的分组(这部分代码有 2000 年的注释)。
有一个自定义类(间接)继承自
CListCtrl
该类的 .cpp 文件中有大约 2k 行代码。
此 ListCtrl 表示的实际数据正在从某些服务中汇集并缓存在该自定义派生列表类的数据成员中。
底层
CListCtrl
本身包含作为空行的项目,没有文本或任何其他数据,除了lParam
,它被设置为实际数据项目的ID,现在它也有iGroupId
listItem.mask = LVIF_PARAM | LVIF_GROUPID;
通过某种自定义行为在列表中绘制的所有实际数据,对于它调用的图标
ImageList_DrawEx()
,对于文本 DrawText()
而不是 SetItemText()
,在一列中有矩形绘制进度条,对于一列它还放置了一个按钮以适当的方式