树控件项目指定概述
在树控件 (CTreeCtrl) 的每个项目都有当前状态。例如,项目可选择,禁用,展开,等等。大多数情况下,树控件自动设置项的状态以反映用户操作,例如项目的选择。但是,通过使用 GetItemState 成员函数,还可以设置项目的状态通过使用 SetItemState 成员函数和检索项的当前状态。有关完整的列表项状态,请参见。 Windows SDK的 树视图控件常数 。
项的当前状态。 nState 参数指定。树控件可能更改项的状态反映一个用户操作,例如选择该项目或将焦点设置到该项目。此外,应用程序可能更改项的状态禁用或隐藏该项目或指定复盖图像或状态图像。
当指定或更改项的状态时, nStateMask 参数指定的状态位设置和 nState 参数包含这些位的新值。例如,下面的示例将父项的当前状态 (指定 hParentItem) 在一 CTreeCtrl 对象 (m_treeCtrl) 到 TVIS_EXPANDPARTIAL:
TVITEM curItem;
HTREEITEM hParentItem;
hParentItem = m_TreeCtrl.GetSelectedItem();
//modify the parent item to keep the '+' sign
curItem.mask = TVIF_STATE | TVIF_HANDLE;
curItem.hItem = hParentItem;
curItem.state = TVIS_EXPANDPARTIAL;
curItem.stateMask = TVIS_EXPANDPARTIAL;
m_TreeCtrl.SetItem(&curItem);
将状态的另一个示例是安装项目的复盖图像。为此, nStateMask 必须包含 TVIS_OVERLAYMASK 值,并且, nState 必须包含复盖图像的从一开始的索引传输左八位通过使用 INDEXTOOVERLAYMASK 宏。索引可以是指定的情况 0 复盖图像。必须添加了复盖图像到树控件内容由以前的复盖图像调用 CImageList::SetOverlayImage 功能。函数指定图像的从一开始的索引添加;这是索引用于 INDEXTOOVERLAYMASK 宏。树控件可以具有四复盖图像。
若要设置项的状态图像, nStateMask 必须包含 TVIS_STATEIMAGEMASK 值,并且, nState 必须包括状态图像的从一开始的索引传输左侧 12 位通过使用 INDEXTOSTATEIMAGEMASK 宏。索引不可以是指定状态图像的 0。有关的更多信息云和状态图像,请参见 树控件图像列表。