Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Strukturansicht-Steuerelement 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 Beschriftung und einem optionalen Bitmapbild, und jedes Element kann eine Liste von Unterelementen zugeordnet sein. Durch Klicken auf ein Element kann der Benutzer die zugeordnete Liste der Unterelemente erweitern oder reduzieren.
Die folgende Abbildung zeigt ein einfaches Strukturansicht-Steuerelement 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.
Nachdem Sie ein Strukturansichtssteuerelement erstellt haben, fügen Sie Elemente hinzu, entfernen, anordnen oder bearbeiten sie anderweitig, indem Sie Nachrichten an das Steuerelement senden. Jede Nachricht verfügt über ein oder mehrere entsprechende Makros, die Sie verwenden können, anstatt die Nachricht explizit zu senden.
Tree-View Formatvorlagen
Strukturansichtsstile steuern Aspekte der Darstellung eines Strukturansicht-Steuerelements. Beim Erstellen des Strukturansichtssteuerelements legen Sie die ursprünglichen Formatvorlagen fest. Sie können die Formatvorlagen nach dem Erstellen des Strukturansichtssteuerelements mithilfe der Funktionen "GetWindowLong " und "SetWindowLong " abrufen und ändern.
Die TVS_HASLINES Formatvorlage verbessert 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.
Diese Formatvorlage selbst zeichnet keine Linien am Stamm der Hierarchie. Dazu müssen Sie die TVS_HASLINES und TVS_LINESATROOT Formatvorlagen kombinieren. Das Ergebnis wird in der folgenden Abbildung gezeigt.
Der Benutzer kann die Liste der untergeordneten Elemente eines übergeordneten Elements erweitern oder reduzieren, indem er auf das übergeordnete Element doppelklickt. Ein Strukturansicht-Steuerelement mit dem TVS_HASBUTTONS Format fügt der linken Seite jedes übergeordneten Elements eine Schaltfläche 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 an der obersten Ebene der Hierarchie hinzu. Dazu müssen Sie TVS_HASLINES, TVS_LINESATROOT und TVS_HASBUTTONS kombinieren. Diese Kombination von Formatvorlagen wird in der folgenden Abbildung gezeigt.
Die TVS_CHECKBOXES Formatvorlage erstellt Kontrollkästchen neben jedem Element. Wenn Sie die Kontrollkästchenformatvorlage verwenden möchten, müssen Sie die TVS_CHECKBOXES Formatvorlage (mit SetWindowLong) festlegen, nachdem Sie das Strukturansichtssteuerelement und vor dem Auffüllen der Struktur erstellt haben. Andernfalls werden die Kontrollkästchen je nach Anzeigedauer möglicherweise deaktiviert angezeigt. Die folgende Abbildung zeigt das Kontrollkästchenformat.
Die TVS_FULLROWSELECT Formatvorlage bewirkt, dass die Auswahlmarkierung über die gesamte Breite des Steuerelements erweitert wird, nicht nur über das Element selbst. Die folgende Abbildung zeigt diese Formatvorlage.
Die TVS_EDITLABELS Formatvorlage ermöglicht es dem Benutzer, die Beschriftungen von Strukturansichtselementen zu bearbeiten. Weitere Informationen zum Bearbeiten von Bezeichnungen finden Sie unter Tree-View Bearbeitung von Bezeichnungen.
Weitere Informationen zu diesen und anderen Formatvorlagen finden Sie unter Tree-View Steuerelementfensterformatvorlagen.
Übergeordnete und untergeordnete Elemente
Jedes Element in einem Strukturansichtssteuerelement kann eine Liste von Unterelementen aufweisen, die als untergeordnete Elemente bezeichnet werden. Ein Element mit mindestens einem untergeordneten Element wird als übergeordnetes Element bezeichnet. Ein untergeordnetes Element wird unterhalb des übergeordneten Elements angezeigt und eingerückt, um anzugeben, dass es dem übergeordneten Element untergeordnet ist. Ein Element, das kein übergeordnetes Element enthält, wird oben in der Hierarchie angezeigt und wird als Stammelement bezeichnet.
Um einem Strukturansicht-Steuerelement ein Element hinzuzufügen, senden Sie die TVM_INSERTITEM Nachricht an das Steuerelement. Die Nachricht gibt ein Handle an 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 Elementhandles in der TVINSERTSTRUCT-Struktur angeben, wird das Element als Stammelement hinzugefügt.
Der Status der Liste der untergeordneten Artikel eines übergeordneten Artikels kann jederzeit entweder erweitert oder reduziert werden. Wenn der Status erweitert wird, werden die untergeordneten Artikel unterhalb des übergeordneten Artikels angezeigt. Wenn es zugeklappt ist, werden die untergeordneten Elemente nicht angezeigt. Die Liste wechselt automatisch zwischen den erweiterten und reduzierten Zuständen, wenn der Benutzer auf das übergeordnete Element doppelklickt oder wenn das übergeordnete Element die TVS_HASBUTTONS Formatvorlage aufweist, 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 Strukturansicht-Steuerelement sendet dem übergeordneten Fenster eine TVN_ITEMEXPANDING Benachrichtigung, wenn die Liste der untergeordneten Elemente eines übergeordneten Elements in der Zeit 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 Strukturansicht-Steuerelement dem übergeordneten Fenster eine TVN_ITEMEXPANDED Benachrichtigung.
Wenn eine Liste mit untergeordneten Elementen erweitert wird, wird sie relativ zum übergeordneten Element eingerückt. Sie können den Einzug mithilfe der TVM_SETINDENT Nachricht festlegen oder den aktuellen Betrag mithilfe der TVM_GETINDENT Nachricht abrufen.
Ein Strukturansicht-Steuerelement verwendet speicherzuweisungen aus dem Heap des Prozesses, der das Strukturansicht-Steuerelement erstellt. Die maximale Anzahl von Elementen in einer Strukturansicht basiert auf der Menge des im Heap verfügbaren Arbeitsspeichers.
Elementbeschriftungen
Normalerweise geben Sie den Text der Beschriftung eines Elements beim Hinzufügen des Elements zum Strukturansichtssteuerelement an. Die TVM_INSERTITEM Nachricht enthält eine TVITEM-Struktur , die die Eigenschaften des Elements definiert, einschließlich einer Zeichenfolge, die den Text der Beschriftung enthält.
Ein Strukturansichtssteuerelement weist Speicher zum Speichern der einzelnen Elemente zu; Der Text der Elementbeschriftungen nimmt einen erheblichen Teil dieses Speichers auf. Wenn Ihre Anwendung eine Kopie der Zeichenfolgen im Strukturansichtssteuerelement verwaltet, können Sie die Speicheranforderungen des Steuerelements verringern, indem Sie den LPSTR_TEXTCALLBACK Wert im pszText-Element von TVITEM angeben, anstatt tatsächliche Zeichenfolgen an die Strukturansicht zu übergeben. Die Verwendung von LPSTR_TEXTCALLBACK bewirkt, dass das Strukturansicht-Steuerelement den Text der Beschriftung eines Elements aus dem übergeordneten Fenster abruft, wenn das Element neu gezeichnet werden muss. Zum Abrufen des Texts sendet das Strukturansichtssteuerelement eine TVN_GETDISPINFO Benachrichtigung, die die Adresse einer NMTVDISPINFO-Struktur enthält. Das übergeordnete Fenster muss die entsprechenden Elemente der enthaltenen Struktur ausfüllen.
Tree-View Bearbeitung von Bezeichnungen
Der Benutzer kann die Beschriftungen von Elementen in einem Strukturansichtssteuerelement, das über die TVS_EDITLABELS Format verfügt, direkt bearbeiten. Der Benutzer beginnt mit der Bearbeitung, indem er auf die Beschriftung des Elements klickt, das den Fokus hat. Eine Anwendung beginnt mit der Bearbeitung der TVM_EDITLABEL Nachricht. Das Strukturansicht-Steuerelement benachrichtigt das übergeordnete Fenster, wenn die Bearbeitung beginnt und wann sie abgebrochen oder abgeschlossen wird. Wenn die Bearbeitung abgeschlossen ist, ist das übergeordnete Fenster ggf. für die Aktualisierung der Elementbezeichnung verantwortlich.
Wenn die Bearbeitung von Bezeichnungen beginnt, sendet ein Strukturansichtssteuerelement das übergeordnete Fenster eine TVN_BEGINLABELEDIT Benachrichtigung. Durch die Verarbeitung dieser Benachrichtigung kann eine Anwendung die Bearbeitung einiger Bezeichnungen zulassen und die Bearbeitung anderer Bezeichnungen verhindern. Durch das Zurückgeben von Null wird die Bearbeitung ermöglicht und das Zurückgeben von Nonzero verhindert.
Wenn die Bearbeitung von Bezeichnungen abgebrochen oder abgeschlossen ist, sendet ein Strukturansicht-Steuerelement sein übergeordnetes Fenster eine TVN_ENDLABELEDIT Benachrichtigung. Der lParam-Parameter ist die Adresse einer NMTVDISPINFO-Struktur . Der Elementparameter 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 null, wenn die Bearbeitung abgebrochen wird.
Während der Beschriftungsbearbeitung können Sie in der Regel als Reaktion auf die TVN_BEGINLABELEDIT-Benachrichtigung das Handle zum Bearbeitungssteuerelement abrufen, das für die Bearbeitung von Bezeichnungen verwendet wird, indem Sie die TVM_GETEDITCONTROL Nachricht verwenden. Sie können das Bearbeitungssteuerelement an eine EM_SETLIMITTEXT Nachricht senden, um die Textmenge einzuschränken, die ein Benutzer eingeben oder unterklassen 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 mithilfe der TVM_INSERTITEM Nachricht dem Strukturansichtssteuerelement hinzugefügt wird. Die Nachricht 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 eines dieser Werte identifizieren: TVI_FIRST, TVI_LAST oder TVI_SORT.
Wenn TVI_FIRST oder TVI_LAST angegeben wird, platziert das Strukturansichtssteuerelement das neue Element am Anfang oder Ende der Liste der untergeordneten Elemente des angegebenen übergeordneten Elements. Wenn TVI_SORT angegeben wird, fügt das Strukturansicht-Steuerelement das neue Element basierend auf dem Text der Elementbeschriftungen in alphabetischer Reihenfolge in die Liste der untergeordneten Elemente ein.
Sie können die Liste der untergeordneten Elemente eines übergeordneten Elements in alphabetischer Reihenfolge platzieren, indem Sie die TVM_SORTCHILDREN Nachricht verwenden. Die Nachricht 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 basierend auf von Ihnen definierten Kriterien sortieren. Wenn Sie diese Meldung verwenden, geben Sie eine anwendungsdefinierte Rückruffunktion an, die das Strukturansichtssteuerelement aufrufen kann, wenn die relative Reihenfolge von zwei untergeordneten Elementen entschieden werden muss. Die Rückruffunktion empfängt zwei 32-Bit-anwendungsdefinierte Werte für die zu vergleichenden Elemente und einen dritten 32-Bit-Wert, den Sie beim Senden von TVM_SORTCHILDRENCB angeben.
Übersicht über Tree-View Elementzustände
Jedes Element in einem Strukturansichtssteuerelement weist einen aktuellen Zustand auf. Die Statusinformationen für jedes Element enthalten eine Reihe von Bitkennzeichnungen sowie Bildlistenindizes, die das Statusbild und das Überlagerungsbild des Elements angeben. Die Bitkennzeichnungen geben an, ob das Element ausgewählt, deaktiviert, erweitert usw. ist. In den meisten Fällen legt ein Strukturansicht-Steuerelement automatisch den Zustand eines Elements fest, um Benutzeraktionen wie z. B. die Auswahl eines Elements widerzuspiegeln. Sie können den Status eines Elements jedoch auch mithilfe der TVM_SETITEM Nachricht festlegen, und Sie können den aktuellen Status eines Elements mithilfe der TVM_GETITEM Nachricht abrufen. Eine vollständige Liste der Elementzustände finden Sie unter Tree-View Steuerelementelementstatus.
Der aktuelle Status eines Elements wird durch den Mitgliedsstaat der TVITEM-Struktur angegeben. Ein Strukturansicht-Steuerelement kann den Zustand 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 das Statemask-Mitglied von TVITEM an, welche Statusbits festgelegt werden sollen, und das Mitgliedsland enthält die neuen Werte für diese Bits.
Um das Überlagerungsbild eines Elements festzulegen, muss die Zustandsmaske den TVIS_OVERLAYMASK-Wert enthalten, und der Zustand muss den 1-basierten Index des Überlagerungsbilds enthalten, das über 8 Bit verschoben wurde, indem das MAKRO INDEXTOOVERLAYMASK verwendet wird. Der Index kann null sein, um kein Überlagerungsbild anzugeben.
Ein Zustandsbild wird neben dem Symbol eines Elements angezeigt, um einen anwendungsdefinierten Zustand anzugeben. Statusbilder sind in einer Zustandsbildliste enthalten, die durch Senden einer TVM_SETIMAGELIST Nachricht angegeben wird. Um das Statusbild eines Elements festzulegen, schließen Sie den TVIS_STATEIMAGEMASK Wert in das Zustandselement der TVITEM-Struktur ein. Bits 12 bis 15 des Zustandsmitglieds der Struktur geben den Index in der Statusbildliste des zu zeichnenden Bilds an.
Verwenden Sie INDEXTOSTATEIMAGEMASK, um den Statusbildindex festzulegen. Dieses Makro akzeptiert einen Index und legt bits 12 bis 15 entsprechend fest. Um anzugeben, dass das Element kein Statusbild aufweist, legen Sie den Index auf Null fest. Diese Konvention bedeutet, dass Bild 0 in der Statusbildliste nicht als Zustandsbild verwendet werden kann. Verwenden Sie die TVIS_STATEIMAGEMASK Maske, um Bits von 12 bis 15 des Mitgliedstaats zu isolieren. Weitere Informationen zu Überlagerungs- und Zustandsbildern finden Sie unterTree-View Bildlisten.
Elementauswahl
Ein Strukturansichtssteuerelement benachrichtigt das übergeordnete Fenster, wenn sich die Auswahl von einem Element in ein anderes ändert, indem die TVN_SELCHANGING und TVN_SELCHANGED Benachrichtigungen gesendet werden. Beide Benachrichtigungen enthalten einen Wert, der angibt, ob die Änderung das Ergebnis eines Mausklicks oder eines Tastenanschlags ist. Die Benachrichtigungen enthalten auch Informationen über das Element, das die Auswahl erhält, und das Element, das die Auswahl verliert. Sie können diese Informationen verwenden, um Elementattribute festzulegen, die vom Auswahlstatus des Elements abhängen. Das Zurückgeben von TRUE als Reaktion auf TVN_SELCHANGING verhindert, dass die Auswahl geändert wird, und das Zurückgeben 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 Nachrichten, die Informationen zu Elementen im Steuerelement abrufen.
Die TVM_GETITEM Nachricht kann das Handle und die Attribute eines Elements abrufen. Die Attribute eines Elements enthalten den aktuellen Zustand, die Indizes in der Bildliste des Steuerelements der ausgewählten und nicht ausgewählten Bitmapbilder des Elements, ein Kennzeichen, 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, das nächste oder vorherige sichtbare Element, das erste untergeordnete Element usw. abrufen.
Die TVM_GETITEMRECT Nachricht ruft das umgebende Rechteck für ein Strukturansichtselement ab. Die TVM_GETCOUNT - und TVM_GETVISIBLECOUNT Nachrichten rufen die Anzahl der Elemente in einem Strukturansichtssteuerelement und eine Anzahl der Elemente ab, die im Fenster des Strukturansichtssteuerelements vollständig sichtbar sein können. Mithilfe der TVM_ENSUREVISIBLE Nachricht können Sie sicherstellen, dass ein bestimmtes Element sichtbar ist.
Tree-View Bildlisten
Jedes Element in einem Strukturansichtssteuerelement kann vier Bitmapbilder zugeordnet sein.
- Ein Bild, z. B. ein geöffneter Ordner, wird angezeigt, wenn das Element ausgewählt ist.
- Ein Bild, z. B. ein geschlossener Ordner, wird angezeigt, wenn das Element nicht ausgewählt ist.
- Ein Überlagerungsbild, das transparent über das ausgewählte oder nicht ausgewählte Bild gezeichnet wird.
- Ein Zustandsbild, 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 aktivierte und deaktivierte Kontrollkästchen verwenden, um anwendungsdefinierte Elementzustände anzugeben.
Standardmäßig zeigt ein Strukturansichtssteuerelement keine Elementbilder an. Zum Anzeigen von Elementbildern müssen Sie Bildlisten erstellen und dem Steuerelement zuordnen. Weitere Informationen zu Bildlisten finden Sie unter "Bildlisten".
Ein Strukturansichtssteuerelement kann zwei Bildlisten aufweisen: eine normale Bildliste und eine Zustandsbildliste. In einer normalen Bildliste werden die ausgewählten, nicht ausgewählten und überlagerten Bilder 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 Nachricht, um die Bildliste dem Strukturansichtssteuerelement zuzuordnen. Die TVM_GETIMAGELIST Nachricht ruft ein Handle zu einer der Bildlisten eines Strukturansichtssteuerelements 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 1-basierten Index identifiziert und sollen transparent über die ausgewählten und nicht ausgewählten Bilder gezeichnet werden. Rufen Sie die ImageList_SetOverlayImage-Funktion auf, um einem Bild in der normalen Bildliste einen Überlagerungsformatindex zuzuweisen.
Standardmäßig zeigen alle Elemente das erste Bild in der Normalbildliste für die ausgewählten und nicht ausgewählten Zustände 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.
Wenn Sie die ausgewählten und nicht ausgewählten Bilder eines Elements angeben möchten, 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-Elementen an. Alternativ können Sie den I_IMAGECALLBACK Wert in iSelectImage und iImage angeben, anstatt Indizes anzugeben. Dadurch wird das Steuerelement jedes Mal, wenn das Element neu gezeichnet wird, sein übergeordnetes Fenster nach einem Bildlistenindex abfragen. Das Steuerelement sendet die TVN_GETDISPINFO Benachrichtigung, um den Index abzurufen.
Um ein Überlagerungsbild einem Element zuzuordnen, verwenden Sie das MAKRO INDEXTOOVERLAYMASK , um einen Überlagerungsformatindex im Zustandselement der TVITEM-Struktur des Elements anzugeben. Sie müssen auch die TVIS_OVERLAYMASK Bits im stateMask-Element festlegen. Überlagerungsmaskenindizes sind einsbasiert; Ein Index von Null gibt an, dass kein Überlagerungsbild angegeben wurde.
Zustandsbilder werden in einer separaten Statusbildliste gespeichert und anhand ihres Indexes identifiziert. Um die Statusbildliste anzugeben, senden Sie eine TVM_SETIMAGELIST Nachricht. Im Gegensatz zum Listenansicht-Steuerelement, das einen 1-basierten Index verwendet, um Zustandsbilder zu identifizieren, werden Strukturansicht-Steuerelementstatusbilder durch einen nullbasierten Index identifiziert. Ein Index von Null weist jedoch darauf hin, dass das Element kein Zustandsbild aufweist. Daher kann Bild 0 nicht als Zustandsbild verwendet werden. Weitere Informationen zu Elementzuständen und Zustandsbildern finden Sie unter Tree-View Item States Overview.
Drag-and-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 und einer TVN_BEGINRDRAG Benachrichtigung beginnt, wenn der Benutzer mit dem Ziehen mit der rechten Schaltfläche beginnt. Sie können verhindern, dass ein Strukturansichtssteuerelement diese Benachrichtigungen sendet, indem Sie dem Strukturansicht-Steuerelement die TVS_DISABLEDRAGDROP Formatvorlage zusenden.
Sie erhalten ein Bild, das während eines Ziehvorgangs angezeigt werden soll, indem Sie die TVM_CREATEDRAGIMAGE Nachricht verwenden. Das Strukturansicht-Steuerelement erstellt eine ziehende Bitmap basierend auf der Beschriftung des Elements, das gezogen wird. Anschließend erstellt das Strukturansichtssteuerelement eine Bildliste, fügt die Bitmap hinzu und gibt das Handle an die Bildliste zurück.
Sie müssen den Code angeben, der das Element tatsächlich verschiebt. Dies umfasst in der Regel die Verwendung der Ziehfunktionen der Bildlistenfunktionen und die Verarbeitung der WM_MOUSEMOVE und WM_LBUTTONUP (oder WM_RBUTTONUP) Nachrichten, die an das übergeordnete Fenster gesendet wurden, nachdem der Ziehvorgang begonnen hat.
Wenn Elemente in einem Strukturansichtssteuerelement die Ziele von Drag-and-Drop-Vorgängen sein sollen, müssen Sie wissen, wann sich der Mauszeiger auf einem Zielelement befindet. Sie können die TVM_HITTEST Nachricht verwenden. 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 Strukturansichtssteuerelement angibt. Wenn sich der Zeiger über einem Element im Strukturansicht-Steuerelement befindet, enthält die Struktur auch den Handle für das Element.
Sie können angeben, dass ein Element das Ziel eines Drag-and-Drop-Vorgangs ist, indem Sie die TVM_SETITEM Nachricht verwenden, um den Zustand auf den TVIS_DROPHILITED Wert festzulegen. Ein Element, das diesen Status hat, wird in dem Stil gezeichnet, der zum Anzeigen eines Drag-and-Drop-Ziels verwendet wird.
Tree-View Steuern von Benachrichtigungen
Ein Strukturansichtssteuerelement sendet die folgenden Benachrichtigungen in Form von WM_NOTIFY Nachrichten an das übergeordnete Fenster.
| Benachrichtigung | BESCHREIBUNG |
|---|---|
| TVN_BEGINDRAG | Signalisiert den Beginn eines Drag-and-Drop-Vorgangs. |
| TVN_BEGINLABELEDIT | Signalisiert den Beginn der Direkten Bearbeitung von Bezeichnungen. |
| TVN_BEGINRDRAG | Signalisiert, dass die rechte Maustaste einen Drag-and-Drop-Vorgang gestartet hat. |
| TVN_DELETEITEM | Signalisiert das Löschen eines bestimmten Elements. |
| TVN_ENDLABELEDIT | Signalisiert das Ende der Beschriftungsbearbeitung. |
| TVN_GETDISPINFO | Fordert Informationen an, die das Strukturansichtssteuerelement zum Anzeigen eines Elements benötigt. |
| TVN_ITEMEXPANDED | Signal, dass die Liste der untergeordneten Elemente eines übergeordneten Elements erweitert oder reduziert wurde. |
| TVN_ITEMEXPANDING | Signal, dass die Liste der untergeordneten Elemente eines übergeordneten Elements in der Zeit erweitert oder reduziert werden soll. |
| TVN_KEYDOWN | Signalisiert ein Tastaturereignis. |
| TVN_SELCHANGED | Signalisiert, dass sich die Auswahl von einem Element in ein anderes geändert hat. |
| TVN_SELCHANGING | Signalisiert, dass die Auswahl von einem Element in ein anderes geändert werden soll. |
| TVN_SETDISPINFO | Benachrichtigt ein übergeordnetes Fenster, dass es die für ein Element verwalteten Informationen aktualisieren muss. |
StandardTree-View Nachrichtenverarbeitung steuern
In diesem Abschnitt wird die Verarbeitung von Fenstermeldungen beschrieben, die von einem Strukturansichtssteuerelement ausgeführt werden. Nachrichten, die für Strukturansichtssteuerelemente spezifisch sind, werden in anderen Abschnitten dieses Dokuments behandelt, sodass sie hier nicht enthalten sind.
| Nachricht | BESCHREIBUNG |
|---|---|
| WM_COMMAND | Verarbeitet die EN_UPDATE und EN_KILLFOCUS Bearbeitung von Steuerelementbenachrichtigungen und leitet alle anderen Bearbeitungssteuerelementbenachrichtigungen an das übergeordnete Fenster weiter. Es gibt keinen Rückgabewert. |
| WM_CREATE | Weist Speicher zu und initialisiert interne Datenstrukturen. Sie gibt null zurück, wenn dies erfolgreich ist, oder -1 andernfalls. |
| WM_DESTROY | Gibt alle Systemressourcen frei, die dem Steuerelement zugeordnet sind. Es gibt 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. Es gibt WAHR zurück. |
| WM_GETDLGCODE | Gibt eine Kombination der werte DLGC_WANTARROWS und DLGC_WANTCHARS zurück. |
| WM_GETFONT | Gibt das Handle an die aktuelle Bezeichnungsschriftart zurück. |
| WM_HSCROLL | Scrollt das Strukturansicht-Steuerelement. Er gibt WAHR zurück, wenn ein Bildlauf auftritt, oder FALSE . |
| WM_KEYDOWN | Sendet die TVN_KEYDOWN-Benachrichtigung an das übergeordnete Fenster für alle Schlüssel. Sendet die Benachrichtigung über NM_RETURN (Strukturansicht), wenn der Benutzer die EINGABETASTE drückt. Sie verschiebt die Caret, wenn der Benutzer die Richtungstasten oder die BILD-AUF-, BILD-AB-, POS-, ENDE- oder RÜCKTASTE drückt. Sie führt einen Bildlauf durch das Strukturansichtssteuerelement durch, wenn der Benutzer die STRG-TASTE in Kombination mit diesen Tasten drückt. Es gibt WAHR zurück, wenn ein Schlüssel verarbeitet wird, oder FALSE, andernfalls FALSE . |
| WM_KILLFOCUS | Überschreibt das fokussierte Element( falls vorhanden) und sendet eine NM_KILLFOCUS -Benachrichtigung (Strukturansicht) an das übergeordnete Fenster. |
| WM_LBUTTONDBLCLK | Bricht die Bearbeitung der Beschriftung ab und sendet, wenn auf ein Element doppelgeklickt wurde, die Benachrichtigung NM_DBLCLK (Strukturansicht) an das übergeordnete Fenster. Wenn das übergeordnete Fenster 0 zurückgibt, schaltet das Strukturansichtssteuerelement den erweiterten Zustand des Elements um, und sendet das übergeordnete Fenster die TVN_ITEMEXPANDING und TVN_ITEMEXPANDED Benachrichtigungen. Es gibt keinen Rückgabewert. |
| WM_LBUTTONDOWN | Schaltet den erweiterten Zustand um, wenn der Benutzer auf die Schaltfläche geklickt hat, die einem übergeordneten Element zugeordnet ist. Wenn der Benutzer auf eine Elementbeschriftung geklickt hat, wählt das Strukturansicht-Steuerelement den Fokus auf das Element aus und legt den Fokus fest. Wenn der Benutzer die Maus bewegt, bevor die Maustaste losgelassen wird, beginnt das Strukturansichtssteuerelement einen Drag-and-Drop-Vorgang. Es gibt keinen Rückgabewert. |
| WM_PAINT | Zeichnet den ungültigen Bereich des Strukturansicht-Steuerelements. Es gibt Null zurück. Wenn der wParam-Parameter ungleich NULL ist, geht das Steuerelement davon aus, dass der Wert ein Handle für einen Gerätekontext (HDC) ist und mit diesem Gerätekontext striche. |
| WM_RBUTTONDOWN | Überprüft, ob auf ein Element geklickt wurde und ein Ziehvorgang begonnen wurde. Wenn der Vorgang begonnen hat, sendet er eine TVN_BEGINRDRAG-Benachrichtigung an das übergeordnete Fenster und hebt das Ablageziel hervor. Andernfalls sendet sie eine NM_RCLICK -Benachrichtigung (Strukturansicht) an das übergeordnete Fenster. Es gibt keinen Rückgabewert. |
| WM_SETFOCUS | Verschenkt das fokussierte Element( falls vorhanden) neu, und sendet eine NM_SETFOCUS Benachrichtigung an das übergeordnete Fenster. |
| WM_SETFONT | Speichert den angegebenen Schriftpunkt und überschreibt das Strukturansichtssteuerelement mithilfe der neuen Schriftart. |
| WM_SETREDRAW | Legt die Kennzeichnung für das Neuzeichnen fest oder löscht sie. Das Strukturansicht-Steuerelement wird neu gezeichnet, nachdem das Kennzeichen für die Neuzeichnen festgelegt wurde. Es gibt Null zurück. |
| WM_SIZE | Komppiliert interne Variablen, die von der Größe des Clientbereichs des Strukturansichtssteuerelements abhängen. Es gibt WAHR zurück. |
| WM_STYLECHANGED | Bricht die Bearbeitung von Bezeichnungen ab und bricht das Strukturansichtssteuerelement mithilfe der neuen Formatvorlagen neu ab. Es gibt Null zurück. |
| WM_SYSCOLORCHANGE | Zeichnen Sie das Strukturansichtssteuerelement mit der neuen Farbe neu, wenn die Kennzeichnung für die Neuzeichnen festgelegt ist. Es gibt keinen Rückgabewert. |
| WM_TIMER | Beginnt mit der Bearbeitung einer Elementbezeichnung. Wenn der Benutzer auf die Beschriftung 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 Bearbeitungsmodus zu vermeiden, wenn der Benutzer auf die Beschriftung doppelkligt. Es gibt Null zurück. |
| WM_VSCROLL | Scrollt das Strukturansicht-Steuerelement. Er gibt WAHR zurück, wenn ein Bildlauf auftritt, oder FALSE . |