Ширина столбцов списка просмотра не соблюдается - PullRequest
1 голос
/ 01 марта 2011

У меня есть список, в который я добавляю несколько столбцов:

LVCOLUMN column;

column.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM | LVCF_IDEALWIDTH;
column.fmt = LVCFMT_LEFT;

for(size_t i = 0; i < columns.size(); ++i)
{
    const string columnName = Format("{0}. {1} ({2})", i + 1, columns[i].Name.empty() ? "?" : columns[i].Name, boost::to_lower_copy(columns[i].GetTypeName()));

    column.iSubItem = i;
    column.pszText = (char *)columnName.c_str();
    column.cchTextMax = columnName.length();
    column.cx = column.cxIdeal = (columns[i].Type == COLUMN_TYPE_STRING) ? 130 : 100;
    ListView_InsertColumn(mListView, i, &column);
    ++mColumnCount;
}

Обратите внимание, в частности column.cx = column.cxIdeal = (columns[i].Type == COLUMN_TYPE_STRING) ? 130 : 100;.

Это не соблюдается; Вот как выглядит список:

enter image description here

Стоит также отметить, что без указания Windows Common Controls 6.0 в файле манифеста код работает отлично, а столбцы имеют правильную ширину.

РЕДАКТИРОВАТЬ : Настройка cxMin на ширину работает, но тогда я не могу вручную изменить размер столбцов, чтобы они имели меньшую ширину (во время выполнения).

1 Ответ

3 голосов
/ 01 марта 2011

Vista и выше имеет автоматическое изменение размера столбцов для версии 6. Его точное поведение плохо документировано.Либо удалите LVCF_IDEALWIDTH, либо используйте LVCF_MINWIDTH и установите член cxMin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...