次の方法で共有


ツリー コントロール項目の状態の概要

ツリー コントロール (CTreeCtrl) の各項目は現在の状態です。 たとえば、項目の選択、無効化、展開などを行うことができます。 ほとんどの場合、ツリー コントロールは、項目の選択などのユーザー アクションを反映するように項目の状態を自動的に設定します。 ただし、 SetItemState メンバー関数を使用して項目の状態を設定し、 GetItemState メンバー関数を使用してアイテムの現在の状態を取得することもできます。 項目の状態の完全な一覧については、Windows SDK のTree-View コントロール定数に関する ページを参照してください。

項目の現在の状態は 、nState パラメーターによって指定されます。 ツリー コントロールは、項目の選択や項目へのフォーカスの設定など、ユーザーアクションを反映するように項目の状態を変更する場合があります。 さらに、アプリケーションはアイテムの状態を変更して、アイテムを無効または非表示にしたり、オーバーレイ イメージまたは状態イメージを指定したりすることがあります。

項目の状態を指定または変更すると、 nStateMask パラメーターは設定する状態ビットを指定し、 nState パラメーターにはそれらのビットの新しい値が含まれます。 たとえば、次の例では、 オブジェクト (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);

状態を変更するもう 1 つの例として、アイテムのオーバーレイ イメージを設定する方法があります。 これを実現するには、 nStateMaskTVIS_OVERLAYMASK 値を含める必要があります。 nState には、 INDEXTOOVERLAYMASK マクロを使用して、左に 8 ビットシフトされたオーバーレイ イメージの 1 から始まるインデックスを含める必要があります。 オーバーレイ イメージを指定しない場合は、インデックスを 0 にできます。 オーバーレイ イメージは、 CImageList::SetOverlayImage 関数の以前の呼び出しによって、ツリー コントロールのオーバーレイ イメージの一覧に追加されている必要があります。 この関数は、追加するイメージの 1 から始まるインデックスを指定します。これは INDEXTOOVERLAYMASK マクロで使用されるインデックスです。 ツリー コントロールには、最大 4 つのオーバーレイ イメージを含めることができます。

項目の状態イメージを設定するには、 nStateMaskTVIS_STATEIMAGEMASK 値を含める必要があります。 nState には 、INDEXTOSTATEIMAGEMASK マクロを使用して左に 12 ビットシフトされた状態イメージの 1 から始まるインデックスを含める必要があります。 状態イメージを指定しない場合は、インデックスを 0 にできます。 オーバーレイイメージと状態イメージの詳細については、「 ツリーコントロールイメージリスト」を参照してください。

こちらも参照ください

CTreeCtrl の使用
コントロール