Как работать с индексами изображений состояния
Часто возникает путаница о том, как задать и получить индекс изображения состояния в элементе управления "Дерево- представление". В следующих примерах демонстрируется правильный метод настройки и получения индекса образа состояния. В примерах предполагается, что в элементе управления "Представление дерева" есть только два индекса состояния, не проверка и проверка. Если приложение содержит более двух, эти функции необходимо изменить для обработки этого дела.
Это важно знать
Технологии
Необходимые компоненты
- C/C++
- Программирование пользовательского интерфейса Windows
Instructions
Установка состояния проверки элемента "Дерево- представление"
В следующем примере показано, как задать состояние проверка элемента представления дерева.
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);
}
Получение состояния проверки элемента представления дерева
В следующем примере показано, как получить проверка проверка элемента представления дерева.
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);
}
См. также