ListView_SetItemState 宏 (commctrl.h)

更改列表视图控件中项的状态。 可以使用此宏或显式发送 LVM_SETITEMSTATE 消息。

语法

void ListView_SetItemState(
   HWND hwndLV,
   int  i,
   UINT data,
   UINT mask
);

参数

hwndLV

类型:HWND

列表视图控件的句柄。

i

类型:int

列表视图项的索引。 如果此参数为 -1,则状态更改将应用于所有项。

data

类型:UINT

项的新状态位。 掩码 参数指示 数据 参数的有效位。 如果未在 掩码 参数中设置相应的位,宏将忽略 数据 参数中的位。 低序字节包含一组指示项状态的位标志。 此字节可以是以下值的组合:

价值 意义
LVIS_CUT
该项标记为剪切和粘贴操作。
LVIS_DROPHILITED
该项突出显示为拖放目标。
LVIS_FOCUSED
该项具有焦点,因此它被标准焦点矩形包围。 虽然可以选择多个项目,但只有一个项目可以具有焦点。
LVIS_SELECTED
已选择该项。 所选项目的外观取决于它是否具有焦点,以及用于选择的系统颜色。 仅当列表视图控件具有焦点或使用 LVS_SHOWSELALWAYS 样式时,项目才会显示为选中。

mask

类型:UINT

要设置或清除的 数据 参数的位。 可以使用 ListView_SetItemState 来设置和清除位。 若要设置项的覆盖图像索引,请设置 LVIS_OVERLAYMASK 位。 若要设置项的状态图像索引,请设置 LVIS_STATEIMAGEMASK 位。

返回值

没有

言论

项的状态值包括一组指示项状态的位标志。 状态值还可以包含图像列表索引,这些索引指示项的状态图像和覆盖图像。

掩码 参数指定要修改的状态位,数据 参数指定这些位的新值。 若要在项的内部状态中设置位,请同时在 掩码数据 参数中设置它。 若要清除项的内部状态中的某个位,请在 掩码 参数中设置它,并在 数据 参数中将其清除。 若要在项的内部状态中保持一点不变,请在 掩码 参数中将其清除。

数据 参数中的位 8 到 11 指定控件图像列表中覆盖图像的基于一个索引。 全尺寸图标图像列表和小型图标图像列表都可以具有覆盖图像。 覆盖图像叠加在项的图标图像上。 如果这些位为零,则该项没有覆盖图像。 若要隔离这些位,请使用 LVIS_OVERLAYMASK 掩码。 若要指定覆盖索引,请使用 INDEXTOOVERLAYMASK 宏。

数据 参数中的位 12 到 15 位指定控件状态映像列表中的图像的基于一个索引。 状态图像显示在项的图标旁边,以指示应用程序定义的状态。 如果这些位为零,则该项没有状态图像。 若要隔离这些位,请使用 LVIS_STATEIMAGEMASK 掩码。 若要指定状态图像索引,请使用 INDEXTOSTATEIMAGEMASK 宏。

要求

要求 价值
最低支持的客户端 Windows Vista [仅限桌面应用]
支持的最低服务器 Windows Server 2003 [仅限桌面应用]
目标平台 窗户
标头 commctrl.h

另请参阅

ListView_GetItemState