0

我从 CListCtrl 派生了一个名为 CListCtrlCustomDraw 的类,并使用 NM_CUSTOMDRAW 处理程序来绘制列表。
问题是我选择的项目和未选择的项目有不同的字体,它们是列表控件的成员变量,但是当我使用

m_list.SetColumnWidth(iCol, LVSCW_AUTOSIZE); 
int nTextWidth = m_list.GetColumnWidth(iCol);
m_list.SetColumnWidth(iCol, LVSCW_AUTOSIZE_USEHEADER);
int nColTitleWidth = m_list.GetColumnWidth(iCol); 
m_list.SetColumnWidth(iCol,max(nTextWidth, nColTitleWidth));

计算列宽时,列表使用未选中项的字体,该字体没有
选中项的字体(粗体)那么宽,因此即使内容相同,也会有一些内容无法显示在
选中项中。

我可以设置使用哪种字体来计算列宽吗?
我尝试在上述代码之前设置字体,但没有效果。
任何建议将不胜感激。

4

1 回答 1

3

您需要手动管理列的宽度。使用GetTextExtentPoint32以最大字体计算最长字符串的大小,并以这种方式设置列宽。

于 2009-12-04T04:34:36.763 回答