Übersicht über Elementzustände des Struktursteuerung-Steuerelements

Jedes Element in einem Struktursteuerelement (CTreeCtrl) weist einen aktuellen Zustand auf. Beispielsweise kann ein Element ausgewählt, deaktiviert, erweitert usw. werden. In den meisten Fällen legt das Struktursteuerelement den Zustand eines Elements automatisch so fest, dass benutzeraktionen, z. B. die Auswahl eines Elements, berücksichtigt werden. Sie können den Status eines Elements jedoch auch mithilfe der SetItemState-Memberfunktion festlegen und den aktuellen Status eines Elements mithilfe der GetItemState-Memberfunktion abrufen. Eine vollständige Liste der Elementzustände finden Sie unter Strukturansicht-Steuerelementkonstanten im Windows SDK.

Der aktuelle Status eines Elements wird durch den nState-Parameter angegeben. Ein Struktursteuerelement kann den Status eines Elements ändern, um eine Benutzeraktion widerzuspiegeln, z. B. das Auswählen des Elements oder das Festlegen des Fokus auf das Element. Darüber hinaus kann eine Anwendung den Status eines Elements ändern, um das Element zu deaktivieren oder auszublenden oder ein Überlagerungsbild oder Zustandsbild anzugeben.

Wenn Sie den Status eines Elements angeben oder ändern, gibt der Parameter "nStateMask " an, welche Statusbits festgelegt werden sollen, und der nState-Parameter enthält die neuen Werte für diese Bits. Das folgende Beispiel ändert beispielsweise den aktuellen Zustand eines übergeordneten Elements (angegeben durch hParentItem) in einem CTreeCtrl Objekt (m_treeCtrl) in 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);

Ein weiteres Beispiel zum Ändern des Zustands wäre das Festlegen des Überlagerungsbilds eines Elements. Dazu muss nStateMask den TVIS_OVERLAYMASK Wert enthalten, und "nState" muss den 1-basierten Index des Überlagerungsbilds enthalten, das über acht Bit verschoben wurde, indem das MAKRO INDEXTOOVERLAYMASK verwendet wird. Der Index kann 0 sein, um kein Überlagerungsbild anzugeben. Das Überlagerungsbild muss der Liste der Überlagerungsbilder durch einen vorherigen Aufruf der CImageList::SetOverlayImage-Funktion hinzugefügt worden sein. Die Funktion gibt den 1-basierten Index des hinzuzufügenden Bilds an; Dies ist der Index, der mit dem INDEXTOOVERLAYMASK-Makro verwendet wird. Ein Struktursteuerelement kann bis zu vier Überlagerungsbilder aufweisen.

Um das Statusbild eines Elements festzulegen, muss nStateMask den TVIS_STATEIMAGEMASK Wert enthalten, und nState muss den 1-basierten Index des Zustandsbilds enthalten, das mit dem INDEXTOSTATEIMAGEMASK-Makro um 12 Bit verschoben wurde. Der Index kann 0 sein, um kein Zustandsbild anzugeben. Weitere Informationen zu Überlagerungs- und Zustandsbildern finden Sie unter Struktursteuerelement-Bildlisten.

Siehe auch

Verwenden von CTreeCtrl
Steuerelemente