【发布时间】:2011-03-01 21:41:42
【问题描述】:
我有一个列表视图,我在其中添加了几列:
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;。
这不被尊重;这是列表视图的样子:
还值得一提的是,如果不在清单文件中定位 Windows Common Controls 6.0,代码可以完美运行,并且列具有正确的宽度。
编辑:将 cxMin 设置为宽度是可行的,但是我无法手动调整列的大小以使其宽度更小(在运行时)。
【问题讨论】:
标签: c++ windows winapi listview