如何调整CListCtrl列的宽度以适合每列中最长的字符串?

时间:2013-05-22 12:04:46

标签: c++ mfc clistctrl

我在尝试:

void MyListCtrl::UpdateWidthOfColumns( void )
{

  int NofColumns = GetItemCount();
  for (int i = 0; i < NofColumns - 1 ; ++i)
  {
      SetColumnWidth( i, LVSCW_AUTOSIZE_USEHEADER );
  }
}

结果:每列的宽度调整为标题字符串大小,而不是最大字符串。
我做错了什么?

1 个答案:

答案 0 :(得分:2)

你这样做:

SetColumnWidth( i, LVSCW_AUTOSIZE_USEHEADER );

根据MSDN

LVSCW_AUTOSIZE_USEHEADER:自动调整列的大小以适合标题文本。

您需要浏览每一列,找到最长的字符串:

CSize   sz;

for (/*for each column, go through each row*/)
{
   sz = pDC->GetTextExtent(str); // get string size for each row
   if (sz.cx > dx)
      dx = sz.cx;
}

然后

//将列宽设置为最大字符串。

SetColumnWidth(dx);