在树视图控件中如何设置和检索状态图像索引通常存在混淆。 以下示例演示了设置和检索状态图像索引的正确方法。 这些示例假定树视图控件中只有两个状态图像索引,未选中和选中。 如果应用程序包含两个以上,则需要修改这些函数来处理这种情况。
需要了解的内容
技术
先决条件
- C/C++
- Windows 用户界面编程
说明书
设置 Tree-View 项的检查状态
以下示例演示如何设置树视图项的检查状态。
BOOL TreeView_SetCheckState(HWND hwndTreeView, HTREEITEM hItem, BOOL fCheck)
{
TVITEM tvItem;
tvItem.mask = TVIF_HANDLE | TVIF_STATE;
tvItem.hItem = hItem;
tvItem.stateMask = TVIS_STATEIMAGEMASK;
// Image 1 in the tree-view check box image list is the unchecked box.
// Image 2 is the checked box.
tvItem.state = INDEXTOSTATEIMAGEMASK((fCheck ? 2 : 1));
return TreeView_SetItem(hwndTreeView, &tvItem);
}
检索 Tree-View 项的检查状态
以下示例演示如何检索树视图项的检查状态。
BOOL TreeView_GetCheckState(HWND hwndTreeView, HTREEITEM hItem)
{
TVITEM tvItem;
// Prepare to receive the desired information.
tvItem.mask = TVIF_HANDLE | TVIF_STATE;
tvItem.hItem = hItem;
tvItem.stateMask = TVIS_STATEIMAGEMASK;
// Request the information.
TreeView_GetItem(hwndTreeView, &tvItem);
// Return zero if it's not checked, or nonzero otherwise.
return ((BOOL)(tvItem.state >> 12) - 1);
}