不尊重列表视图列的宽度

我有一个列表视图,我添加了几列:

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; column.cx = column.cxIdeal = (columns[i].Type == COLUMN_TYPE_STRING) ? 130 : 100;

这是不受尊重的; 这是listview的样子:

在这里输入图像说明

另外值得一提的是,如果不在清单文件中定位Windows公共控件6.0,则代码完美地工作,并且列具有正确的宽度。

编辑 :设置cxMin宽度的作品,但是我不能手动调整列的大小,使他们有更less的宽度(在运行时)。

Vista和以上版本的列自动调整大小。它的确切行为没有很好的记录。 要么删除LVCF_IDEALWIDTH,要么使用LVCF_MINWIDTH并设置cxMin成员。