有一种说法,将listview的列宽设置为-1,能根据内容的长度来自动调整李宽,自动的,不过我发现在virtual listview模式下,似乎不起作用,或者说达不到效果,如果listview有200万行,对数据容器做textwidth似乎又太慢了。


其实有个方法,只需要调整可视范围内的listview的列宽就可以了,只要对显示出来的数据进行比较,取数据的宽度,设置为最大宽度就可以了,不需要全部遍历

bool TMainForm::IsItemVisiable(int itemindex)
{
// 判断itemindex是否在可视范围内,如果是则返回true
int topindex = ListView_GetTopIndex(lv1->Handle);
int count = ListView_GetCountPerPage(lv1->Handle);
if (itemindex >= topindex && itemindex <= topindex + count)
return true;
return false;
}


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐