Je suis en train:Comment ajuster la largeur d'une colonne à la largeur de la chaîne la plus longue dans 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]);
}
Comme la largeur de résultat de la colonne est le 20/30% plus grand que l'une des plus grandes chaînes dans cette colonne. Je veux que la largeur de la colonne soit égale à la largeur de la chaîne avec la longueur maximale.
Merci d'avance!
maintenant la largeur de la colonne est plus petite que nécessaire. –
Le propriétaire de votre contrôle de liste est-il dessiné? –
oui, l'élément Draw est implémenté –