2010-04-09 239 views
11

如何使CListCtrl自动调整其列宽度?通常,当列表中的项目变得太长时,后端会从视图中消失,用户需要手动调整相应列的宽度。 有没有办法通过代码来做到这一点?在CListCtrl中自动调整列宽的大小

回答

12

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

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

这将优化列。

+0

嘿,我试过了,它似乎工作:) :) 非常感谢dwo的回复:D – Isuru 2010-04-10 04:19:36

+0

一个小问题dwo,我从来没有听说过HeaderControl。究竟是什么? 非常感谢! – Isuru 2010-04-10 04:35:58

+0

标题控件是列控件的上半部分,其中包含列标题。 – dwo 2010-04-10 20:02:31

1

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

1

我假设你是指报表模式下的列表控件?不幸的是,没有办法自动调整列的大小。你可以做什么(我在某些地方做的)是在输入项目时计算列的宽度,然后处理WM_SIZE并调整列的大小。但是,这会导致用户所做的更改丢失,因此如果用户做了任何更改(如果他没有调整大小),您可能需要更好的算法(如跟踪)。从用户体验的角度来看,这并不是很好,我只在特定情况下使用它,在其他用户界面的情况下,行为才有意义。

+0

是的,这正是我的意思。感谢您的回复,如果我无法获得合适的算法,我只需处理OnSize()手动调整大小,并要求读者调整窗口大小。 – Isuru 2010-04-10 04:18:52