我試圖:如何將列的寬度調整爲CListCtrl中最長字符串的寬度?
tstring subItemText;
CDC* pDc = GetListCtrl().GetDC();
for (int row = GetItemCount() - 1; row >= 0; --row)
{
subItemText = _T("");
for (int col = 0; col < NumCol; ++col)
{
subItemText = this->GetSubItemString(GetItemData(row), col);
CSize sz;
// get length of the string in logical units, by default 1 unit == 1 pixel, type of font is accounted
sz = pDc->GetOutputTextExtent(subItemText.c_str());
if (static_cast<int>(sz.cx) > ColWidth[col])
ColWidth[col] = sz.cx;
}
}
GetListCtrl().ReleaseDC (pDc);
for (int col = 0; col < NumCol; ++col)
{
SetColumnWidth(col, ColWidth[col]);
}
作爲柱的結果是寬度比上該列中的最大串的一個較大的20/30%。 我希望列的寬度將等於最大長度的字符串的寬度。
在此先感謝!
現在列的寬度比需要的小。 –
您的列表控制所有者是否已繪製? –
是的,繪製項目被執行 –