Mfc CListCtrl:在同一列上使用不同字体时,如何获取列宽?

Mfc CListCtrl:在同一列上使用不同字体时,如何获取列宽?,mfc,clistctrl,custom-draw,Mfc,Clistctrl,Custom Draw,我从CListCtrl派生了一个名为CListCtrlCustomDraw的类,并使用NM_CUSTOMDRAW处理程序绘制列表。 问题是我对所选项目和未选项目有不同的字体,它们是列表控件的成员变量,但是当我使用 m_list.SetColumnWidth(iCol, LVSCW_AUTOSIZE); int nTextWidth = m_list.GetColumnWidth(iCol); m_list.SetColumnWidth(iCol, LVSCW_AUTOSIZE_USEHEADE

我从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));
要计算列宽,列表将使用未选定项的字体,该字体的宽度没有选定项的宽度大
由于所选项目的字体(粗体),因此会有一些内容无法显示在
所选项目,即使它们具有相同的内容

我可以设置使用哪种字体来计算列宽吗?
我尝试在上述代码之前设置字体,但没有效果。

任何建议都将不胜感激。

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

您需要手动管理列宽。用于计算最大字体中最长字符串的大小,并以此方式设置列宽