树控件图像列表

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

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

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

如果指定了状态映像列表,树控件将为状态图像保留每个项图标左侧的空间。 应用程序可以使用状态图像(如已选中和清除的复选框)来指示应用程序定义的项状态。 位为 12 到 15 的非零值指定状态映像的基于一个索引(0 表示无状态图像)。

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

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

另请参阅

使用 CTreeCtrl
控件