LVCOLUMN.iSubItem 的目的是什么?
What is the purpose of LVCOLUMN.iSubItem?
我不明白LVCOLUMN.iSubItem
的目的是什么。 MSDN 是这样说的:
iSubItem
Type: int
Index of subitem associated with the column.
我首先想到的意思是当我创建一个列时,我可以为该列设置一个索引,例如:123,然后当我想向该列中插入一些数据时,我只需提供数字123 作为列的标识。
但是不管用,无论我给列设置什么索引,列的编号仍然是0,1,2,3,...
该子项仅对样式为 LVS_REPORT 的列表控件有效并起作用。您需要插入列才能使用它。
使用这种样式,您可以添加项目 LVM_INSERTITEM,并且每个项目都可以有子项目。要处理子项的内容,您需要结构成员。
如果使用 LVS_REPORT 样式,列表视图控件看起来像网格控件。
在这种情况下,项目存储在第 0 列中,子项目表示存储的内容
在其他专栏中(没有一个完整的概念,例如 "cell")。因此,子项索引特别与 LVM_SETITEM and LVM_GETITEM messages (or with corresponding ListView_SetItem and ListView_GetItem 宏一起使用),例如写入或读取 X 列文本值。根据索引,如果 iSubItem == 0,您访问该项目,如果 iSubItem >= 1.
,则访问子项目
您可以在 SO 上查看此问题以获取更多示例:Items and Subitems in List-View control
不,LVCOLUMN.iSubItem
是从 0 从左到右按顺序编号的。是的,它确实看起来毫无用处,因为您必须始终指定列号才能对 LVCOLUMN 执行任何操作。所以它只是让你回到你已经知道的东西。
很难猜测这是怎么发生的,除了注意到通用控件并不是微软最好的时刻。我怀疑它 可能 与列表视图上的 LVS_EX_HEADERDRAGDROP
有关。这允许用户通过拖动来重新排列列。现在您传递给 LVM_GETCOLUMN 的列索引变得有点模糊,它应该指示 position 还是 original 索引柱子?如果您需要知道用户如何排列列,他们会选择后者并使用 LVM_GETCOLUMNORDERARRAY
。
或者他们只是简单地镜像 LVITEM.iSubItem
以保持结构相似,也许有点相似。不用担心。
我不明白LVCOLUMN.iSubItem
的目的是什么。 MSDN 是这样说的:
iSubItem
Type: int Index of subitem associated with the column.
我首先想到的意思是当我创建一个列时,我可以为该列设置一个索引,例如:123,然后当我想向该列中插入一些数据时,我只需提供数字123 作为列的标识。
但是不管用,无论我给列设置什么索引,列的编号仍然是0,1,2,3,...
该子项仅对样式为 LVS_REPORT 的列表控件有效并起作用。您需要插入列才能使用它。
使用这种样式,您可以添加项目 LVM_INSERTITEM,并且每个项目都可以有子项目。要处理子项的内容,您需要结构成员。
如果使用 LVS_REPORT 样式,列表视图控件看起来像网格控件。
在这种情况下,项目存储在第 0 列中,子项目表示存储的内容 在其他专栏中(没有一个完整的概念,例如 "cell")。因此,子项索引特别与 LVM_SETITEM and LVM_GETITEM messages (or with corresponding ListView_SetItem and ListView_GetItem 宏一起使用),例如写入或读取 X 列文本值。根据索引,如果 iSubItem == 0,您访问该项目,如果 iSubItem >= 1.
,则访问子项目您可以在 SO 上查看此问题以获取更多示例:Items and Subitems in List-View control
不,LVCOLUMN.iSubItem
是从 0 从左到右按顺序编号的。是的,它确实看起来毫无用处,因为您必须始终指定列号才能对 LVCOLUMN 执行任何操作。所以它只是让你回到你已经知道的东西。
很难猜测这是怎么发生的,除了注意到通用控件并不是微软最好的时刻。我怀疑它 可能 与列表视图上的 LVS_EX_HEADERDRAGDROP
有关。这允许用户通过拖动来重新排列列。现在您传递给 LVM_GETCOLUMN 的列索引变得有点模糊,它应该指示 position 还是 original 索引柱子?如果您需要知道用户如何排列列,他们会选择后者并使用 LVM_GETCOLUMNORDERARRAY
。
或者他们只是简单地镜像 LVITEM.iSubItem
以保持结构相似,也许有点相似。不用担心。