我在一个包含大约 700 个项目的 activex 控件内有一个列表视图。当过滤器事件发生时,使用下面的代码从列表视图中删除项目,只留下几个过滤的项目。我注意到 700 个项目中的前 300 个已成功删除,但其余的则无法删除(ListView_DeleteItem 返回 false)。在随后对代码的调用中,应该删除的剩余项目的一半被删除,然后再删除一半,等等。最终所有应该删除的项目都已经被删除,但是可能需要对下面的循环进行 5 或 6 次调用。
for (size_t rowNum=0; rowNum < toDelete.size() ; rowNum ++)
{
bool result = ListView_DeleteItem(listCtrl, rowNum);
}