ListView_SetItemState宏 (commctrl.h)

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

语法

void ListView_SetItemState(
   hwndLV,
   i,
   data,
   mask
);

参数

hwndLV

类型: HWND

列表视图控件的句柄。

i

类型: int

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

data

类型: UINT

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

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

mask

类型: UINT

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

返回值

备注

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

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

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

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

要求

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

另请参阅

ListView_GetItemState