自动调整CListCtrl中的列宽

时间:2010-04-09 07:53:25

标签: mfc resize clistctrl

如何让CListCtrl自动调整列宽?通常,当列表中的项目太长时,后端会从视图中消失,并且用户手动必须调整相应列的宽度。 有没有办法通过代码来做到这一点?

3 个答案:

答案 0 :(得分:12)

自动调整列的大小很简单:

for(int i = 0;i < pListCtrl->GetHeaderCtrl()->GetItemCount();++i)
    pListCtrl->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER);

这将优化列。

答案 1 :(得分:1)

你有“无滚动”选项吗?默认情况下(“无滚动”选项关闭),如果项目太长,则会出现滚动条。

答案 2 :(得分:0)

我假设你是指报告模式中的列表控件?遗憾的是,没有办法自动调整列的大小。您可以执行的操作(我在某些地方执行的操作)是在输入项目时计算列的宽度,然后处理WM_SIZE并调整列的大小。然而,这会导致用户丢失的更改,因此如果用户没有进行任何更改,您可能需要更好的算法,例如跟踪,如果他没有调整大小。从用户体验的角度来看,它不是很好,我只在一定数量的情况下使用它,其中行为在UI的其余部分的上下文中是有意义的。