LVCOLUMN.iSubItem的目的是什么?

use*_*812 6 winapi listview

我不明白是什么目的LVCOLUMN.iSubItem.这就是MSDN所说的:

iSubItem

Type: int

Index of subitem associated with the column.
Run Code Online (Sandbox Code Playgroud)

我首先想到这意味着当我创建一个列时,我可以为列设置索引,例如:123,然后当我想将一些数据插入列时,我只提供数字123作为标识专栏.

但它不起作用,无论我设置哪些索引列,列仍然编号为0,1,2,3 ......

Han*_*ant 4

不,LVCOLUMN.iSubItem正如您所发现的,从 0 从左到右按顺序编号。是的,它看起来确实没有任何用途,因为您必须始终指定列号才能对 LVCOLUMN 执行任何操作。所以它只是给你返回你已经知道的东西。

很难猜测这是如何发生的,除了要注意通用控件并不完全是微软最好的时刻。我怀疑这可能与列表视图有关LVS_EX_HEADERDRAGDROP。这允许用户通过拖动来重新排列列。现在传递给 LVM_GETCOLUMN 的列索引变得有点模糊,它是否应该指示列的位置原始索引?LVM_GETCOLUMNORDERARRAY如果您需要知道用户如何排列列,则使用后者。

或者他们只是简单地镜像LVITEM.iSubItem以保持结构相似,也许更有可能。别担心。