ツリー コントロール項目の状態の概要
ツリー コントロール (CTreeCtrl) 内の各項目には、現在の状態が設定されます。 たとえば、項目に対しては、選択、使用不能、展開などの操作が可能です。 ほとんどの場合、ツリー コントロールの項目の状態は、ユーザーによる操作 (項目の選択など) を反映して自動的に設定されます。 ただし、SetItemState メンバー関数を使用して項目の状態を設定したり、GetItemState メンバー関数を使用して項目の現在の状態を取得したりすることもできます。 項目の状態の一覧については、Windows SDK の「Tree-View Control Constants」を参照してください。
項目の現在の状態は、パラメーター nState によって示されます。 ツリー コントロールは、ユーザーによる操作 (項目の選択や、項目へのフォーカスの設定など) を反映するために項目の状態を変更します。 また、アプリケーション側で項目の状態を変更して、項目を使用不能または非表示にしたり、オーバーレイ イメージまたは状態イメージを指定することもできます。
項目の状態を取得または設定する場合、パラメーター nStateMask は設定する状態のビットを示し、パラメーター nState はその状態のビットに対応する新しい値を示します。 次のコードは、CTreeCtrl オブジェクト (m_treeCtrl) にある親項目 (hParentItem) の現在の状態を 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 には 1 から始まるオーバーレイ イメージのインデックスを INDEXTOOVERLAYMASK マクロを使用して 8 ビット左にシフトした値を指定する必要があります。 インデックスを 0 にして、オーバーレイ イメージを指定しないようにすることもできます。 オーバーレイ イメージは、あらかじめ CImageList::SetOverlayImage 関数を呼び出して、ツリー コントロールのオーバーレイ イメージ リストに追加しておく必要があります。 この関数は、追加するイメージの 1 から始まるインデックス番号を指定します。このインデックスは INDEXTOOVERLAYMASK マクロと共に使用されます。 ツリー コントロールは、最大 4 つまでのオーバーレイ イメージを含むことができます。
項目の状態イメージを設定するには、nStateMask に TVIS_STATEIMAGEMASK 値を指定し、パラメーター nState には、1 から始まる状態イメージのインデックスを INDEXTOSTATEIMAGEMASK マクロを使用して 12 ビット左にシフトした値を指定する必要があります。 状態イメージを指定しない場合は、インデックスを 0 にできます。 オーバーレイ イメージおよび状態イメージの詳細については、「ツリー コントロールのイメージ リスト」を参照してください。