防止在 ListCtrl (ReportView) 中调整第一列的大小

Tom*_*Tom 3 winapi controls mfc

我来自这个 LVCFMT_FIXED_WIDTH 这种格式样式有效,但仅在第一列之后。第一列项目始终是可移动的。为什么?我是否遗漏了什么?

for(int i = 0; i<NUM_COLUMNS; i++)
{
    m_ListCtrl.InsertColumn(i,_gszColumnLabel[i], _gnColumnFmt[i] |  LVCFMT_FIXED_WIDTH, _gnColumnWidth[i], -1);
}   
Run Code Online (Sandbox Code Playgroud)

And*_*ers 5

由于某种原因,第一列很特殊:

如果将一列添加到索引为 0(最左边的列)的列表视图控件,则该列始终为 LVCFMT_LEFT。在第 0 列上设置其他标志不会覆盖该对齐方式。因此,如果继续插入索引为 0 的列,则所有列中的文本都会左对齐。如果您希望第一列右对齐或居中,您可以创建一个虚拟列,然后插入一个或多个索引为 1 或更高的列,并指定所需的对齐方式。最后删除虚拟列。

也许虚拟列技巧也适用于您的情况?