Mfc 如何为CListCtrl提供自定义列宽计算?

Mfc 如何为CListCtrl提供自定义列宽计算?,mfc,clistctrl,Mfc,Clistctrl,我使用CListCtrl和我自己的“DrawItem”在文本前面的第一列中绘制一些自定义图形。为此,文本将向右移动约20个像素。那部分有效 如果用户双击标题中的列分隔符,Windows将计算最佳列宽。但是Windows当然不知道我的自定义图形。因此,对于第一列来说,结果太小了约20个像素 如何更正此问题?找到了解决方法: 我可以诱使MFC认为列表控件使用复选框: pMyList->SetExtendedStyle(pMyList->GetExtendedStyle() | LVS_E

我使用CListCtrl和我自己的“DrawItem”在文本前面的第一列中绘制一些自定义图形。为此,文本将向右移动约20个像素。那部分有效

如果用户双击标题中的列分隔符,Windows将计算最佳列宽。但是Windows当然不知道我的自定义图形。因此,对于第一列来说,结果太小了约20个像素

如何更正此问题?

找到了解决方法:

我可以诱使MFC认为列表控件使用复选框:

pMyList->SetExtendedStyle(pMyList->GetExtendedStyle() | LVS_EX_CHECKBOXES);

用户永远看不到系统的复选框(因为我的自定义图形),但这只给了我所需的空间。

您是否尝试过在列标题上捕获dbl单击的消息?您应该能够将列的大小限制在您需要的范围内。目前还不能。我希望像“override OnCalculateColumnWidth an add 20”这样的东西,而不是一个人做。但到目前为止,我没有找到这样一个可以覆盖的。