树控件图像列表

树控件中的每个项 (CTreeCtrl) 都可有一对与之关联的位图图像。 图像显示在项标签的左侧。 选中项时会显示一个图像,未选定项时显示另一个图像。 例如,选中项时,该项可能显示一个打开的文件夹;未选定项时,该项可能显示一个关闭的文件夹。

若要使用项图像,必须构造 CImageList 对象并使用 函数创建关联的图像列表来创建图像列表。 然后,将所需的位图添加到列表中,并使用 SetImageList 成员函数将列表与树控件相关联。 默认情况下,对于选定状态和非选定状态,所有项都会在图像列表中显示第一个图像。 使用 InsertItem 成员函数将项添加到树控件时,可指定选定图像和未选定图像的索引来更改特定项的默认行为。 可在添加项后使用 SetItemImage 成员函数更改索引。

树控件的图像列表还可包含覆盖图像,这些图像旨在叠加在项图像上。 树控件项状态第 8 位至第 11 位中的非零值指定覆盖图像的从 1 开始的索引(0 表示没有覆盖图像)。 由于使用了包含 4 位的从 1 开始的索引,因此覆盖图像必须是图像列表中前 15 个图像之一。 有关树控件项状态的详细信息,请参阅本主题前面的树控件项状态概述

如果指定了状态图像列表,树控件将保留每个项的图标左侧的空间供状态图像使用。 应用程序可使用状态图像(例如“已选中”和“已清除”复选框)来指示应用程序定义的项状态。 第 12 位至第 15 位中的非零值指定状态映像的从 1 开始的索引(0 表示没有状态图像)。

通过指定 I_IMAGECALLBACK 值而不是图像的索引,可延迟指定所选或未选定的图像,直到即将重新绘制项。 I_IMAGECALLBACK 通过发送 TVN_GETDISPINFO 通知消息,指示树控件查询应用程序来获取索引。

GetImageList 成员函数会检索树控件图像列表的句柄。 如果需要向列表添加更多图像,此函数非常有用。 有关图像列表的详细信息,请查看使用 CImageList、MFC 参考中的 CImageList 和 Windows SDK 中的图像列表

另请参阅

使用 CTreeCtrl
Controls