Informationen zu Tree-View-Steuerelementen

Ein Strukturansichtssteuerelement ist ein Fenster, in dem eine hierarchische Liste von Elementen angezeigt wird, z. B. die Überschriften in einem Dokument, die Einträge in einem Index oder die Dateien und Verzeichnisse auf einem Datenträger. Jedes Element besteht aus einer Bezeichnung und einem optionalen Bitmapbild, und jedem Element kann eine Liste von Unteritemen zugeordnet sein. Durch Klicken auf ein Element kann der Benutzer die zugeordnete Liste der Unteritems erweitern oder reduzieren.

Die folgende Abbildung zeigt ein einfaches Strukturansichtssteuerelement mit einem Stammknoten, einem erweiterten Knoten und einem reduzierten Knoten. Das -Steuerelement verwendet eine Bitmap für das ausgewählte Element und eine andere Bitmap für andere Elemente.

Screenshot mit fünf Knoten in einer Hierarchie Der Text eines Knotens ist ausgewählt, knoten sind jedoch nicht durch Zeilen miteinander verknüpft.

Nachdem Sie ein Strukturansichtssteuerelement erstellt haben, fügen Sie Elemente hinzu, entfernen sie, ordnen sie an oder bearbeiten sie anderweitig, indem Sie Nachrichten an das Steuerelement senden. Jede Nachricht verfügt über mindestens ein entsprechendes Makro, das Sie verwenden können, anstatt die Nachricht explizit zu senden.

Die folgenden Themen werden in diesem Abschnitt erläutert.

Tree-View Stile

Strukturansichtsstile steuern Aspekte der Darstellung eines Strukturansichtssteuerelements. Sie legen die anfänglichen Stile fest, wenn Sie das Strukturansichtssteuerelement erstellen. Sie können die Stile nach dem Erstellen des Strukturansichtssteuerelements abrufen und ändern, indem Sie die Funktionen GetWindowLong und SetWindowLong verwenden.

Der TVS _ HASLINES-Stil erweitert die grafische Darstellung der Hierarchie eines Strukturansichtssteuerelements durch Zeichnen von Linien, die untergeordnete Elemente mit ihrem übergeordneten Element verknüpfen, wie in der folgenden Abbildung dargestellt.

Screenshot der vorherigen Anordnung, jedoch mit Linien, die den Knoten beitreten Die erste Zeile wird vom Stammknoten abgeleitet.

Allein zeichnet dieser Stil keine Linien am Stamm der Hierarchie. Hierzu müssen Sie die TVS _ HASLINES- und TVS _ LINESATROOT-Stile kombinieren. Das Ergebnis wird in der folgenden Abbildung dargestellt.

Screenshot der vorherigen Anordnung, jedoch mit einer zusätzlichen horizontalen Linie, die zum Stammknoten führt

Der Benutzer kann die Liste der untergeordneten Elemente eines übergeordneten Elements erweitern oder reduzieren, indem er auf das übergeordnete Element doppelklickt. Ein Strukturansichtssteuerelement mit dem TVS _ HASBUTTONS-Stil fügt eine Schaltfläche auf der linken Seite jedes übergeordneten Elements hinzu. Der Benutzer kann einmal auf die Schaltfläche klicken, anstatt auf das übergeordnete Element zu doppelklicken, um das untergeordnete Element zu erweitern oder zu reduzieren. TVS _ HASBUTTONS fügt keine Schaltflächen zu Elementen im Stamm der Hierarchie hinzu. Hierzu müssen Sie TVS _ HASLINES, TVS _ LINESATROOTund TVS _ HASBUTTONS kombinieren. Diese Kombination von Stilen wird in der folgenden Abbildung dargestellt.

Screenshot der vorherigen Anordnung, jedoch mit Schaltflächen zum Erweitern/Reduzieren an jedem Scheitelpunkt von zwei Zeilen

Der TVS _ CHECKBOXES-Stil erstellt Kontrollkästchen neben jedem Element. Wenn Sie das Kontrollkästchenformat verwenden möchten, müssen Sie den TVS _ CHECKBOXES-Stil (mit SetWindowLong)festlegen, nachdem Sie das Strukturansichtssteuerelement erstellt haben und bevor Sie die Struktur auffüllen. Andernfalls werden die Kontrollkästchen je nach Zeitsteuerungsproblemen möglicherweise deaktiviert angezeigt. Die folgende Abbildung zeigt den Stil des Kontrollkästchens.

Screenshot der vorherigen Anordnung, jedoch mit einem Kontrollkästchen neben jedem Knoten zwei der Kontrollkästchen sind aktiviert.

Der TVS _ FULLROWSELECT-Stil bewirkt, dass sich die Auswahlmarkerung über die gesamte Breite des Steuerelements erstreckt, nicht nur über das Element selbst. Die folgende Abbildung zeigt diesen Stil.

Screenshot der ursprünglichen Anordnung von fünf Knoten ohne Zeilen, aber die Auswahlmarkierung erweitert die vollständige Breite des Steuerelements.

Der TVS _ EDITLABELS-Stil ermöglicht es dem Benutzer, die Bezeichnungen von Strukturansichtselementen zu bearbeiten. Weitere Informationen zum Bearbeiten von Bezeichnungen finden Sie unter Strukturansichtsbezeichnungsbearbeitung.

Weitere Informationen zu diesen und anderen Stilen finden Sie unter Strukturansicht-Steuerelementfensterstile.

Übergeordnete und untergeordnete Elemente

Jedem Element in einem Strukturansichtssteuerelement kann eine Liste von Unterelementen , die als untergeordnete Elemente bezeichnet werden, zugeordnet sein. Ein Element, das über ein oder mehrere untergeordnete Elemente verfügt, wird als übergeordnetes Element bezeichnet. Ein untergeordnetes Element wird unter seinem übergeordneten Element angezeigt und eingerückt, um anzugeben, dass es dem übergeordneten Element untergeordnet ist. Ein Element ohne übergeordnetes Element wird oben in der Hierarchie angezeigt und als Stammelement bezeichnet.

Um einem Strukturansichtssteuerelement ein Element hinzuzufügen, senden Sie die TVM _ INSERTITEM-Nachricht an das Steuerelement. Die Nachricht gibt ein Handle für den HTREEITEM-Typ zurück, der das Element eindeutig identifiziert. Beim Hinzufügen eines Elements müssen Sie das Handle für das übergeordnete Element des neuen Elements angeben. Wenn Sie null oder den _ TVI-ROOT-Wert anstelle eines übergeordneten Elementhandle in der TVINSERTSTRUCT-Struktur angeben, wird das Element als Stammelement hinzugefügt.

Der Status der Liste der untergeordneten Elemente eines übergeordneten Elements kann jederzeit erweitert oder reduziert werden. Wenn der Zustand erweitert wird, werden die untergeordneten Elemente unterhalb des übergeordneten Elements angezeigt. Wenn sie reduziert wird, werden die untergeordneten Elemente nicht angezeigt. Die Liste schaltet automatisch zwischen dem erweiterten und reduzierten Status um, wenn der Benutzer auf das übergeordnete Element doppelklickt, oder, wenn das übergeordnete Element über den TVS _ HASBUTTONS-Stil verfügt, wenn der Benutzer auf die Schaltfläche klickt, die dem übergeordneten Element zugeordnet ist. Eine Anwendung kann die untergeordneten Elemente mithilfe der TVM _ EXPAND-Nachricht erweitern oder reduzieren.

Ein Strukturansichtssteuerelement sendet dem übergeordneten Fenster eine TVN _ ITEMEXPANDING-Benachrichtigungsmeldung, wenn die Liste der untergeordneten Elemente eines übergeordneten Elements erweitert oder reduziert werden soll. Die Benachrichtigung gibt einer Anwendung die Möglichkeit, die Änderung zu verhindern oder Attribute des übergeordneten Elements festzulegen, die vom Status der Liste der untergeordneten Elemente abhängen. Nach dem Ändern des Status der Liste sendet das Strukturansichtssteuerelement dem übergeordneten Fenster eine TVN _ ITEMEXPANDED-Benachrichtigungsmeldung.

Wenn eine Liste untergeordneter Elemente erweitert wird, wird sie relativ zum übergeordneten Element eingerückt. Sie können die Einzugsmenge mithilfe der TVM _ SETINDENT-Nachricht festlegen oder den aktuellen Betrag mithilfe der TVM _ GETINDENT-Nachricht abrufen.

Ein Strukturansichtssteuerelement verwendet Arbeitsspeicher, der vom Heap des Prozesses belegt wird, der das Strukturansichtssteuerelement erstellt. Die maximale Anzahl von Elementen in einer Strukturansicht basiert auf der Im Heap verfügbaren Arbeitsspeichermenge.

Elementbezeichnungen

In der Regel geben Sie den Text der Bezeichnung eines Elements an, wenn Sie das Element dem Strukturansichtssteuerelement hinzufügen. Die TVM _ INSERTITEM-Nachricht enthält eine TVITEM-Struktur, die die Eigenschaften des Elements definiert, einschließlich einer Zeichenfolge, die den Text der Bezeichnung enthält.

Ein Strukturansichtssteuerelement belegt Arbeitsspeicher zum Speichern der einzelnen Elemente. der Text der Elementbezeichnungen nimmt einen erheblichen Teil dieses Arbeitsspeichers in Anspruch. Wenn Ihre Anwendung eine Kopie der Zeichenfolgen im Strukturansichtssteuerelement verwaltet, können Sie die Arbeitsspeicheranforderungen des Steuerelements verringern, indem Sie den LPSTR _ TEXTCALLBACK-Wert im pszText-Member von TVITEM angeben, anstatt tatsächliche Zeichenfolgen an die Strukturansicht zu übergeben. Die Verwendung von LPSTR _ TEXTCALLBACK bewirkt, dass das Strukturansichtssteuerelement den Text der Bezeichnung eines Elements aus dem übergeordneten Fenster abruft, wenn das Element neu gezeichnet werden muss. Um den Text abzurufen, sendet das Strukturansichtssteuerelement eine TVN GETDISPINFO-Benachrichtigungsmeldung, _ die die Adresse einer NMTVDISPINFO-Struktur enthält. Das übergeordnete Fenster muss die entsprechenden Elemente der eingeschlossenen Struktur ausfüllen.

Tree-View Bearbeitung von Bezeichnungen

Der Benutzer kann die Bezeichnungen von Elementen direkt in einem Strukturansichtssteuerelement bearbeiten, das über den TVS _ EDITLABELS-Stil verfügt. Der Benutzer beginnt mit der Bearbeitung, indem er auf die Bezeichnung des Elements klickt, das den Fokus besitzt. Eine Anwendung beginnt mit der Bearbeitung mithilfe der TVM _ EDITLABEL-Nachricht. Das Strukturansichtssteuerelement benachrichtigt das übergeordnete Fenster, wenn die Bearbeitung beginnt und abgebrochen oder abgeschlossen wird. Wenn die Bearbeitung abgeschlossen ist, ist das übergeordnete Fenster ggf. für die Aktualisierung der Bezeichnung des Elements verantwortlich.

Wenn die Bearbeitung von Bezeichnungen beginnt, sendet ein Strukturansichtssteuerelement dem übergeordneten Fenster eine TVN _ BEGINLABELEDIT-Benachrichtigungsmeldung. Durch die Verarbeitung dieser Benachrichtigung kann eine Anwendung die Bearbeitung einiger Bezeichnungen zulassen und die Bearbeitung anderer verhindern. Die Rückgabe von 0 (null) ermöglicht die Bearbeitung, und das Zurückgeben von ungleich 0 (null) verhindert dies.

Wenn die Bearbeitung von Bezeichnungen abgebrochen oder abgeschlossen wird, sendet ein Strukturansichtssteuerelement dem übergeordneten Fenster eine TVN _ ENDLABELEDIT-Benachrichtigungsmeldung. Der lParam-Parameter ist die Adresse einer NMTVDISPINFO-Struktur. Der Item-Parameter ist eine TVITEM-Struktur, die das Element identifiziert und den bearbeiteten Text enthält. Das übergeordnete Fenster ist für die Aktualisierung der Bezeichnung des Elements verantwortlich, wenn die neue Bezeichnung beibehalten werden soll. Das pszText-Element von TVITEM ist 0 (null), wenn die Bearbeitung abgebrochen wird.

Während der Bearbeitung von Bezeichnungen können Sie in der Regel als Reaktion auf die TVN _ BEGINLABELEDIT-Benachrichtigungsmeldung das Handle für das Bearbeitungssteuerelement abrufen, das für die Bezeichnungsbearbeitung verwendet wird, indem Sie die TVM _ GETEDITCONTROL-Nachricht verwenden. Sie können dem Bearbeitungssteuerelement eine EM _ SETLIMITTEXT-Nachricht senden, um die Textmenge einzuschränken, die ein Benutzer eingeben oder als Unterklasse des Bearbeitungssteuerelements eingeben kann, um ungültige Zeichen abzufangen und zu verwerfen. Beachten Sie jedoch, dass das Bearbeitungssteuerelement erst angezeigt wird, nachdem TVN _ BEGINLABELEDIT gesendet wurde.

Tree-View Elementposition

Die Anfangsposition eines Elements wird festgelegt, wenn das Element dem Strukturansicht-Steuerelement mithilfe der TVM _ INSERTITEM-Meldung hinzugefügt wird. Die Meldung enthält eine TVINSERTSTRUCT-Struktur, die das Handle für das übergeordnete Element und das Handle für das Element angibt, nach dem das neue Element eingefügt werden soll. Das zweite Handle muss entweder ein untergeordnetes Element des angegebenen übergeordneten Elements oder einen der folgenden Werte identifizieren: TVI _ FIRST, TVI _ LAST oder TVI _ SORT.

Wenn TVI FIRST oder TVI LAST angegeben wird, platziert das Strukturansicht-Steuerelement das neue Element am Anfang oder Ende der Liste der untergeordneten Elemente des angegebenen _ _ übergeordneten Elements. Wenn TVI SORT angegeben wird, fügt das Strukturansichtssteuerelement das neue Element basierend auf dem Text der Elementbezeichnungen in alphabetischer Reihenfolge in die Liste der _ untergeordneten Elemente ein.

Sie können die Liste der untergeordneten Elemente eines übergeordneten Elements in alphabetischer Reihenfolge mithilfe der TVM _ SORTCHILDREN-Meldung hinzufügen. Die Meldung enthält einen -Parameter, der angibt, ob alle Ebenen untergeordneter Elemente, die vom angegebenen übergeordneten Element absteigen, ebenfalls in alphabetischer Reihenfolge sortiert werden.

Mit der TVM _ SORTCHILDRENCB-Nachricht können Sie untergeordnete Elemente anhand von Kriterien sortieren, die Sie definieren. Wenn Sie diese Meldung verwenden, geben Sie eine anwendungsdefinierte Rückruffunktion an, die das Strukturansicht-Steuerelement aufrufen kann, wenn die relative Reihenfolge von zwei untergeordneten Elementen festgelegt werden muss. Die Rückruffunktion empfängt zwei anwendungsdefinierte 32-Bit-Werte für die verglichenen Elemente und einen dritten 32-Bit-Wert, den Sie beim Senden von TVM _ SORTCHILDRENCB angeben.

Tree-View Elementzustände – Übersicht

Jedes Element in einem Strukturansicht-Steuerelement hat einen aktuellen Zustand. Die Zustandsinformationen für jedes Element umfassen einen Satz von Bitflags sowie Bildlistenindizes, die das Statusbild und das Überlagerungsbild des Elements angeben. Die Bitflags geben an, ob das Element ausgewählt, deaktiviert, erweitert und so weiter ist. In den meisten Fällen legt ein Strukturansicht-Steuerelement automatisch den Zustand eines Elements fest, um Benutzeraktionen wie die Auswahl eines Elements widerzuleiten. Sie können den Zustand eines Elements jedoch auch mithilfe der TVM _ SETITEM-Nachricht festlegen und den aktuellen Zustand eines Elements mithilfe der TVM _ GETITEM-Nachricht abrufen. Eine vollständige Liste der Elementzustände finden Sie unter Strukturansicht-Steuerelementelementzustände.

Der aktuelle Zustand eines Elements wird vom Zustandselement der TVITEM-Struktur angegeben. Ein Strukturansicht-Steuerelement kann den Zustand eines Elements ändern, um eine Benutzeraktion widerzubeenden, z. B. das Auswählen des Elements oder das Festlegen des Fokus auf das Element. Darüber hinaus kann eine Anwendung den Zustand eines Elements ändern, um das Element zu deaktivieren oder auszublenden oder ein Überlagerungsbild oder ein Statusbild anzugeben.

Wenn Sie den Zustand eines Elements angeben oder ändern, gibt das StateMask-Element von TVITEM an, welche Zustandsbits festgelegt werden müssen, und das Zustandselement enthält die neuen Werte für diese Bits.

Zum Festlegen des Überlagerungsbilds eines Elements muss die Zustandsmaske den TVIS _ OVERLAYMASK-Wert enthalten, und der Zustand muss den einbasierten Index des Überlagerungsbilds enthalten, das mithilfe des INDEXTOOVERLAYMASK-Makros um 8 Bits nach links verschoben wurde. Der Index kann 0 (null) sein, um kein Überlagerungsbild anzugeben.

Neben dem Symbol eines Elements wird ein Statusbild angezeigt, um einen anwendungsdefinierten Zustand anzugeben. Zustandsbilder sind in einer Statusbildliste enthalten, die durch Senden einer TVM _ SETIMAGELIST-Nachricht angegeben wird. Um das Zustandsbild eines Elements zu festlegen, schließen Sie den TVIS _ STATEIMAGEMASK-Wert in das StateMask-Element der TVITEM-Struktur ein. Die Bits 12 bis 15 des Zustandsmitglieds der Struktur geben den Index in der Statusbildliste des zu zeichneten Bilds an.

Verwenden Sie zum Festlegen des Statusbildindexes INDEXTOSTATEIMAGEMASK. Dieses Makro verwendet einen Index und legt die Bits 12 bis 15 entsprechend fest. Um anzugeben, dass das Element über kein Statusbild verfügt, legen Sie den Index auf 0 (null) fest. Diese Konvention bedeutet, dass das Bild 0 (null) in der Statusbildliste nicht als Zustandsbild verwendet werden kann. Verwenden Sie die TVIS _ STATEIMAGEMASK-Maske, um die Bits 12 bis 15 des Zustandsmitglieds zu isolieren. Weitere Informationen zu Überlagerungs- und Zustandsbildern finden Sie unter Tree-View Image Lists.

Elementauswahl

Ein Strukturansicht-Steuerelement benachrichtigt das übergeordnete Fenster, wenn sich die Auswahl von einem Element zu einem anderen ändert, indem die Benachrichtigungsmeldungen TVN _ SELCHANGING und TVN _ SELCHANGED gesendet werden. Beide Benachrichtigungen enthalten einen Wert, der angibt, ob die Änderung das Ergebnis eines Mausklicks oder einer Tastatureingabe ist. Die Benachrichtigungen enthalten auch Informationen über das Element, das die Auswahl erhalten soll, und das Element, das die Auswahl verliert. Mithilfe dieser Informationen können Sie Elementattribute festlegen, die vom Auswahlzustand des Elements abhängen. Die Rückgabe von TRUE als Reaktion auf TVN SELCHANGING verhindert, dass die Auswahl geändert wird, und die Rückgabe von _ FALSE ermöglicht die Änderung.

Eine Anwendung kann die Auswahl ändern, indem sie die TVM _ SELECTITEM-Nachricht sendet.

Elementinformationen

Strukturansichtssteuerelemente unterstützen eine Reihe von Meldungen, die Informationen zu Elementen im Steuerelement abrufen.

Die TVM _ GETITEM-Nachricht kann das Handle und die Attribute eines Elements abrufen. Zu den Attributen eines Elements gehören der aktuelle Zustand, die Indizes in der Bildliste des Steuerelements der ausgewählten und nicht ausgewählten Bitmapbilder des Elements, ein Flag, das angibt, ob das Element untergeordnete Elemente enthält, die Adresse der Bezeichnungszeichenfolge des Elements und der anwendungsdefinierte 32-Bit-Wert des Elements.

Die TVM _ GETNEXTITEM-Nachricht ruft das Strukturansichtselement ab, das die angegebene Beziehung zum aktuellen Element trägt. Die Nachricht kann das übergeordnete Element eines Elements, das nächste oder vorherige sichtbare Element, das erste untergeordnete Element und so weiter abrufen.

Die TVM _ GETITEMRECT-Nachricht ruft das umgebundene Rechteck für ein Strukturansichtselement ab. Die TVM _ GETCOUNT- und TVM _ GETVISIBLECOUNT-Meldungen rufen die Anzahl der Elemente in einem Strukturansicht-Steuerelement und die Anzahl der Elemente ab, die im Fenster des Strukturansicht-Steuerelements vollständig sichtbar sein können. Sie können sicherstellen, dass ein bestimmtes Element sichtbar ist, indem Sie die NACHRICHT TVM _ ENSUREVISIBLE verwenden.

Tree-View Bildlisten

Jedem Element in einem Strukturansicht-Steuerelement können vier Bitmapbilder zugeordnet sein.

  • Ein Bild, z. B. ein geöffneter Ordner, das angezeigt wird, wenn das Element ausgewählt wird.
  • Ein Bild, z. B. ein geschlossener Ordner, das angezeigt wird, wenn das Element nicht ausgewählt ist.
  • Ein Überlagerungsbild, das transparent über dem ausgewählten oder nicht ausgewählten Bild gezeichnet wird.
  • Ein Statusbild, bei dem es sich um ein zusätzliches Bild handelt, das links neben dem ausgewählten oder nicht ausgewählten Bild angezeigt wird. Sie können Zustandsbilder wie z. B. Kontrollkästchen mit und ohne Kontrollkästchen verwenden, um anwendungsdefinierte Elementzustände anzugeben.

Standardmäßig zeigt ein Strukturansicht-Steuerelement keine Elementbilder an. Zum Anzeigen von Elementbildern müssen Sie Bildlisten erstellen und diese dem Steuerelement zuordnen. Weitere Informationen zu Bildlisten finden Sie unter Bildlisten.

Ein Strukturansicht-Steuerelement kann zwei Bildlisten enthalten: eine normale Bildliste und eine Statusbildliste. In einer normalen Bildliste werden die ausgewählten, nicht ausgewählten und Überlagerungsbilder gespeichert. In einer Statusbildliste werden Zustandsbilder gespeichert. Verwenden Sie die ImageList _ Create-Funktion, um eine Bildliste zu erstellen, und verwenden Sie andere Bildlistenfunktionen, um der Bildliste Bitmaps hinzuzufügen. Verwenden Sie dann die TVM _ SETIMAGELIST-Meldung, um die Bildliste dem Strukturansicht-Steuerelement zu zuordnen. Die TVM _ GETIMAGELIST-Nachricht ruft ein Handle für eine der Bildlisten eines Strukturansicht-Steuerelements ab. Diese Meldung ist nützlich, wenn Sie der Liste weitere Bilder hinzufügen müssen.

Zusätzlich zu den ausgewählten und nicht ausgewählten Bildern kann die normale Bildliste eines Strukturansicht-Steuerelements bis zu vier Überlagerungsbilder enthalten. Überlagerungsbilder werden durch einen einbasierten Index identifiziert und sind so konzipiert, dass sie transparent über die ausgewählten und nicht ausgewählten Bilder gezeichnet werden. Um einem Bild in der normalen Bildliste einen Overlaymaskenindex zu zuweisen, rufen Sie die Funktion ImageList _ SetOverlayImage auf.

Standardmäßig zeigen alle Elemente das erste Bild in der normalen Bildliste sowohl für den ausgewählten als auch für den nicht ausgewählten Zustand an. Außerdem zeigen Elemente standardmäßig keine Überlagerungsbilder oder Zustandsbilder an. Sie können diese Standardverhalten für ein Element ändern, indem Sie die TVM _ INSERTITEM- oder TVM _ SETITEM-Nachricht senden. Diese Nachrichten verwenden die TVITEM-Struktur, um Bildlistenindizes für ein Element anzugeben.

Um die ausgewählten und nicht ausgewählten Bilder eines Elements anzugeben, legen Sie die TVIF SELECTEDIMAGE- und TVIF IMAGE-Bits im Maskenelement der TVITEM-Struktur fest, und geben Sie Indizes aus der normalen Bildliste des Steuerelements in den _ _ iSelectImage- und iImage-Membern an. Alternativ können Sie den I _ IMAGECALLBACK-Wert in iSelectImage und iImage angeben, anstatt Indizes anzugeben. Dies bewirkt, dass das -Steuerelement jedes Mal, wenn das Element neu gezeichnet wird, sein übergeordnetes Fenster nach einem Bildlistenindex abfragt. Das -Steuerelement sendet die TVN _ GETDISPINFO-Benachrichtigungsmeldung, um den Index abzurufen.

Verwenden Sie zum Zuordnen eines Überlagerungsbilds zu einem Element das IndexTOOVERLAYMASK-Makro, um einen Überlagerungsmaskenindex im Zustandselement der TVITEM-Struktur des Elements anzugeben. Sie müssen auch die TVIS _ OVERLAYMASK-Bits im stateMask-Member festlegen. Überlagerungsmaskenindizes sind 1-basiert. Ein Index von 0 (null) gibt an, dass kein Überlagerungsbild angegeben wurde.

Zustandsbilder werden in einer separaten Statusbildliste gespeichert und durch ihren Index identifiziert. Um die Statusbildliste anzugeben, senden Sie eine _ TVM SETIMAGELIST-Nachricht. Im Gegensatz zum Listenansicht-Steuerelement, das einen einbasierten Index zum Identifizieren von Zustandsbildern verwendet, werden Steuerelementzustandsbilder in Strukturansichten durch einen nullbasierten Index identifiziert. Ein Index von 0 (null) gibt jedoch an, dass das Element kein Statusbild hat. Daher kann das Bild 0 (null) nicht als Zustandsbild verwendet werden. Weitere Informationen zu Elementzuständen und Zustandsbildern finden Sie unter Übersicht über Elementzustände in Strukturansichten.

Drag & Drop-Vorgänge

Ein Strukturansicht-Steuerelement benachrichtigt das übergeordnete Fenster, wenn der Benutzer mit dem Ziehen eines Elements beginnt. Das übergeordnete Fenster empfängt eine TVN _ BEGINDRAG-Benachrichtigung, wenn der Benutzer mit dem Ziehen eines Elements mit der linken Maustaste beginnt, und eine TVN BEGINRDRAG-Benachrichtigungsmeldung, _ wenn der Benutzer mit dem Ziehen mit der rechten Schaltfläche beginnt. Sie können verhindern, dass ein Strukturansicht-Steuerelement diese Benachrichtigungen sendet, indem Sie dem Strukturansicht-Steuerelement den TVS _ DISABLEDRAGDROP-Stil geben.

Sie erhalten ein Bild, das während eines Ziehvorgang mithilfe der TVM _ CREATEDRAGIMAGE-Meldung angezeigt werden soll. Das Strukturansicht-Steuerelement erstellt eine Ziehbitmap basierend auf der Bezeichnung des gezogenen Elements. Anschließend erstellt das Strukturansicht-Steuerelement eine Bildliste, fügt ihr die Bitmap hinzu und gibt das Handle an die Bildliste zurück.

Sie müssen den Code bereitstellen, der das Element tatsächlich zieht. Dies umfasst in der Regel die Verwendung der Ziehfunktionen der Bildlistenfunktionen und die Verarbeitung der WM _ MOUSEMOVE- und _ WM-LBUTTONUP-Meldungen (oder WM _ RBUTTONUP),die an das übergeordnete Fenster gesendet werden, nachdem der Ziehvorgang begonnen hat.

Wenn Elemente in einem Strukturansicht-Steuerelement ziele von Drag & Drop-Vorgängen sein sollen, müssen Sie wissen, wann sich der Mauszeiger auf einem Zielelement befindet. Dies können Sie mithilfe der _ TVM-HITTEST-Meldung herausfinden. Sie geben die Adresse einer TVHITTESTINFO-Struktur an, die die aktuellen Koordinaten des Mauszeigers enthält. Wenn die SendMessage-Funktion zurückgegeben wird, enthält die -Struktur ein Flag, das die Position des Mauszeigers relativ zum Strukturansicht-Steuerelement angibt. Wenn sich der Zeiger über einem Element im Strukturansicht-Steuerelement befindet, enthält die Struktur auch das Handle für das Element.

You can indicate that an item is the target of a drag-and-drop operation by using the TVM_SETITEM message to set the state to the TVIS_DROPHILITED value. Ein Element mit diesem Zustand wird im Stil gezeichnet, der zum Angeben eines Drag & Drop-Ziels verwendet wird.

Tree-View-Benachrichtigungsmeldungen

Ein Strukturansicht-Steuerelement sendet die folgenden Benachrichtigungsmeldungen in Form von WM _ NOTIFY-Nachrichten an das übergeordnete Fenster.

Benachrichtigung Beschreibung
TVN _ BEGINDRAG Signalisiert den Start eines Drag & Drop-Vorgangs.
TVN _ BEGINLABELEDIT Signalisiert den Beginn der Bearbeitung der bezeichnungsbasierten Beschriftung.
TVN _ BEGINRDRAG Signalisiert, dass die rechte Maustaste einen Drag & Drop-Vorgang gestartet hat.
TVN _ DELETEITEM Signalisiert das Löschen eines bestimmten Elements.
TVN _ ENDLABELEDIT Signalisiert das Ende der Bezeichnungsbearbeitung.
TVN _ GETDISPINFO Fordert Informationen an, die das Strukturansichtssteuerelement benötigt, um ein Element anzuzeigen.
TVN _ ITEMEXPANDED Signalisiert, dass die Liste der untergeordneten Elemente eines übergeordneten Elements erweitert oder reduziert wurde.
TVN _ ITEMEXPANDING Signalisiert, dass die Liste der untergeordneten Elemente eines übergeordneten Elements erweitert oder reduziert wird.
TVN _ KEYDOWN Signalisiert ein Tastaturereignis.
TVN _ SELCHANGED Signalisiert, dass sich die Auswahl von einem Element zu einem anderen geändert hat.
TVN _ SELCHANGING Signalisiert, dass die Auswahl von einem Element in ein anderes geändert wird.
TVN _ SETDISPINFO Benachrichtigt ein übergeordnetes Fenster, dass es die Informationen aktualisieren muss, die es für ein Element verwaltet.

Standardeinstellung Tree-View Steuern der Nachrichtenverarbeitung

In diesem Abschnitt wird die Fensternachrichtenverarbeitung beschrieben, die von einem Strukturansicht-Steuerelement ausgeführt wird. Meldungen, die für Strukturansichtssteuerelemente spezifisch sind, werden in anderen Abschnitten dieses Dokuments erläutert, sodass sie hier nicht enthalten sind.

Message Verarbeitung ausgeführt
_WM-BEFEHL Verarbeitet die Benachrichtigungsmeldungen EN _ UPDATE und EN _ KILLFOCUS zum Bearbeiten von Steuerelementen und gibt alle anderen Bearbeitungssteuerungsbenachrichtigungen an das übergeordnete Fenster weiter. Es ist kein Rückgabewert vorhanden.
WM _ CREATE Weist Arbeitsspeicher zu und initialisiert interne Datenstrukturen. Bei Erfolg wird 0 (null) zurückgegeben, andernfalls -1.
WM _ DESTROY Gibt alle Systemressourcen frei, die dem Steuerelement zugeordnet sind. Sie gibt 0 (null) zurück.
WM _ ENABLE Aktiviert oder deaktiviert das Steuerelement.
WM _ ERASEBKGND Löscht den Fensterhintergrund mithilfe der aktuellen Hintergrundfarbe für das Strukturansicht-Steuerelement. Sie gibt TRUE zurück.
WM _ GETDLGCODE Gibt eine Kombination der DLGC-Werte _ WANT DLGC WANTGCWS und DLGC _ WANTCHARS zurück.
WM _ GETFONT Gibt das Handle an die aktuelle Bezeichnungsschriftart zurück.
WM _ HSCROLL Führt einen Bildlauf für das Strukturansichtssteuerfeld aus. Sie gibt TRUE zurück, wenn ein Bildlauf erfolgt, andernfalls FALSE.
WM _ KEYDOWN Sendet die TVN _ KEYDOWN-Benachrichtigungsmeldung für alle Schlüssel an das übergeordnete Fenster. Sendet die _ Benachrichtigungsmeldung NM RETURN (Strukturansicht), wenn der Benutzer die EINGABETASTE drückt. Sie verschiebt das Caret-Zeichen, wenn der Benutzer die Richtungstasten drückt oder die TASTEN "NACH OBEN", "SEITE NACH UNTEN", "HOME", "END" oder "BACKSPACE" drückt. Es führt einen Bildlauf im Strukturansichtssteuerfeld durch, wenn der Benutzer die STRG-Taste in Kombination mit diesen Tasten drückt. Sie gibt TRUE zurück, wenn ein Schlüssel verarbeitet wird, andernfalls FALSE.
WM _ KILLFOCUS Neu gemalt das fokussierte Element (sofern verfügbar) und sendet eine NM _ KILLFOCUS-Benachrichtigungsmeldung (Strukturansicht) an das übergeordnete Fenster.
WM _ LBUTTONDBLCLK Bricht die Bezeichnungsbearbeitung ab und sendet, wenn auf ein Element doppelklickt wurde, die Benachrichtigungsmeldung NM _ DBLCLK (Strukturansicht) an das übergeordnete Fenster. Wenn das übergeordnete Fenster 0 zurückgibt, schaltet das Strukturansicht-Steuerelement den erweiterten Zustand des Elements um und sendet dem übergeordneten Fenster die Benachrichtigungsmeldungen TVN _ ITEMEXPANDING und TVN _ ITEMEXPANDED. Es ist kein Rückgabewert vorhanden.
WM _ LBUTTONDOWN Umschaltet den erweiterten Zustand, wenn der Benutzer auf die Einem übergeordneten Element zugeordnete Schaltfläche geklickt hat. Wenn der Benutzer auf eine Elementbezeichnung geklickt hat, wählt das Strukturansicht-Steuerelement den Fokus auf das Element aus und legt diesen fest. Wenn der Benutzer die Maus bewegt, bevor er die Maustaste loslassen kann, startet das Strukturansicht-Steuerelement einen Drag & Drop-Vorgang. Es ist kein Rückgabewert vorhanden.
WM _ PAINT Zeichnet den ungültigen Bereich des Strukturansicht-Steuerelements. Sie gibt 0 (null) zurück. Wenn der wParam-Parameter nicht NULL ist, geht das Steuerelement davon aus, dass der Wert ein Handle für einen Gerätekontext (HDC) ist, und zeichnet mit diesem Gerätekontext.
WM _ RBUTTONDOWN Überprüft, ob auf ein Element geklickt wurde und ein Ziehvorgang gestartet wurde. Wenn der Vorgang gestartet wurde, sendet er eine TVN _ BEGINRDRAG-Benachrichtigungsmeldung an das übergeordnete Fenster und hebt das Absturzziel hervor. Andernfalls wird eine NM _ RCLICK-Benachrichtigung (Strukturansicht) an das übergeordnete Fenster gesendet. Es ist kein Rückgabewert vorhanden.
WM _ SETFOCUS Neu gemalt das fokussierte Element (sofern verfügbar) und sendet eine NM SETFOCUS-Benachrichtigungsmeldung _ an das übergeordnete Fenster.
WM _ SETFONT Speichert das angegebene Schriftarthandl und zeigt das Strukturansicht-Steuerelement mithilfe der neuen Schriftart neu an.
WM _ SETREDRAW Legt das Flag für das neu gezeichnete -Flag fest oder legt es fest. Das Strukturansicht-Steuerelement wird neu gezeichnet, nachdem das Flag für das neu gezeichnete Steuerelement festgelegt wurde. Sie gibt 0 (null) zurück.
WM _ SIZE Neucomputet interne Variablen, die von der Größe des Clientbereichs des Strukturansicht-Steuerelements abhängen. Sie gibt TRUE zurück.
WM _ STYLECHANGED Bricht die Bearbeitung von Bezeichnungen ab unddrawst das Strukturansicht-Steuerelement mithilfe der neuen Stile neu. Sie gibt 0 (null) zurück.
WM _ SYSCOLORCHANGE Das Strukturansicht-Steuerelement wird mit der neuen Farbe neu gezeichnet, wenn das Neuzeichnungsflag festgelegt ist. Es ist kein Rückgabewert vorhanden.
WM _ TIMER Beginnt mit dem Bearbeiten einer Elementbezeichnung. Wenn der Benutzer auf die Bezeichnung des fokussierten Elements klickt, legt das Strukturansicht-Steuerelement einen Timer fest, anstatt sofort in den Bearbeitungsmodus zu wechseln. Der Timer ermöglicht es der Strukturansicht, den Eintritt in den Bearbeitungsmodus zu vermeiden, wenn der Benutzer auf die Bezeichnung doppelklickt. Sie gibt 0 (null) zurück.
WM _ VSCROLL Führt einen Bildlauf für das Strukturansichtssteuerfeld aus. Sie gibt TRUE zurück, wenn ein Bildlauf erfolgt, andernfalls FALSE.

BEISPIEL: CustDTv veranschaulicht benutzerdefiniertes Zeichnen in einer TreeView (Q248496)