1

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

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

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

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

4

2 回答 2

1

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

于 2014-07-06T17:12:26.767 回答
-1

这篇 Codeproject 文章中,您应该能够使用以下内容自动调整列的大小:

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));

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

于 2013-11-03T08:46:01.780 回答