use this (replace your for (int col = 0; col < NumCol; ++col)
with the code below):
for (int col = 0; col < NumCol; ++col)
{
int len = 0;
for(int row = 0; this->GetItemCount(); ++row)
{
CString item = this->GetItemText(row, col);
if(item.GetLength() > len) len = item.GetLength();
}
if (len > arrOfMaxColumnWidth[col])
arrOfMaxColumnWidth[col] = len; // should you multiple it to Scale?
}