宽度不尊重
问题描述:
我有一个列表视图,我加几列:特别column.cx = column.cxIdeal = (columns[i].Type == COLUMN_TYPE_STRING) ? 130 : 100;
宽度不尊重
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;
}
通知。
这不受尊重;这是列表视图的样子:
另外值得一提的是,没有针对Windows公共控件清单文件6.0代码工作完美,列有正确的宽度。
编辑:将cxMin设置为宽度有效,但我无法手动调整列的大小以使它们的宽度更小(运行时)。
答
Vista和更高版本自动调整版本6的列大小。它的确切行为没有很好的记录。要么删除LVCF_IDEALWIDTH,要么使用LVCF_MINWIDTH并设置cxMin成员。
我最初只有'LVCF_WIDTH'宽度相关的字段..我添加了所有其他人只是为了使其工作,但只有'LVCF_WIDTH'它没有。可能它与列表视图处于虚拟模式(LVS_OWNERDATA)的事实有关? –
不太可能,奇怪的问题。如果您完全使用LVM_SETEXTENDEDLISTVIEWSTYLE(ListView_SetExtendedListViewStyle),则记录您传递的内容。 –
我在里面有'LVS_EX_AUTOSIZECOLUMNS' ..我加了它,因为它看起来像个好主意,但后来完全忘了它。现在删除它,我的宽度受到尊重,非常感谢你=) –