虚拟CListCtrl自动大小

时间:2013-11-03 07:56:53

标签: c++ visual-studio mfc autosize clistctrl

我想自动调整虚拟ClistCtrl(LVS_OWNERDATA标志)的列。

我在一些论坛中发现虚拟列表不能使用“LVSCW_AUTOSIZE”选项。有人建议改为实现算法。

但是一旦加载我的ClistCtrl而没有任何调整大小选项,双击标题分隔符会正确调整可见列的大小。

那么,我如何执行“HDN_DIVIDERDBLCLICKW”调用的函数?

2 个答案:

答案 0 :(得分:1)

Clements建议的自动调整功能适用于普通列表控件,但不适用于虚拟控件(因为控件对列数据一无所知)。您必须自己提供数据列宽度。

答案 1 :(得分:-1)

this Codeproject article开始,您应该可以使用以下内容自动调整列:

pListCtrl->SetColumnWidth(i, LVSCW_AUTOSIZE);
int nColumnWidth = pListCtrl->GetColumnWidth(i);
pListCtrl->SetColumnWidth(i, LVSCW_AUTOSIZE_USEHEADER);
int nHeaderWidth = pListCtrl->GetColumnWidth(i); 
pListCtrl->SetColumnWidth(i, max(nColumnWidth, nHeaderWidth));

您可能需要处理the LVN_GETDISPINFO notification以向虚拟列表控件提供必要的数据,但是......