Freigeben über


Informationen zu Symbolleistensteuerelementen

Eine Symbolleiste ist ein Steuerelement, das eine oder mehrere Schaltflächen enthält. Jede Schaltfläche, wenn sie von einem Benutzer geklickt wird, sendet eine Befehlsnachricht an das übergeordnete Fenster. In der Regel entsprechen die Schaltflächen in einer Symbolleiste den Elementen im Menü der Anwendung und bieten dem Benutzer eine zusätzliche und direktere Möglichkeit, auf die Befehle einer Anwendung zuzugreifen.

Der folgende Screenshot zeigt ein Fenster, das eine einfache Symbolleiste für Dateivorgänge enthält. Die Anwendung hat visuelle Stile aktiviert. Die Schaltfläche "Speichern" ist "heiß", da der Cursor darauf zeigt, als der Screenshot erstellt wurde. Die tatsächliche Darstellung des Steuerelements hängt vom Betriebssystem und vom Benutzer ausgewählten Design ab.

Screenshot eines Fensters mit einer Symbolleiste mit drei Schaltflächen; Eine Schaltfläche ist heiß

Der folgende Screenshot zeigt dasselbe Steuerelement in einer Anwendung, die ohne aktivierte visuelle Stile kompiliert wurde.

Screenshot eines Fensters ohne visuelle Stile: Keine der Schaltflächen sieht heiß aus

In den folgenden Themen werden Features erläutert, die beim Planen einer Symbolleiste berücksichtigt werden sollten. Spezifische Informationen zur Implementierung und Beispielcode finden Sie unter Verwenden von Symbolleistensteuerelementen.

Angeben von Symbolleistengröße und -position

Wenn Sie eine Symbolleiste mit CreateToolbarEx erstellen, können Sie mit der Funktion die Höhe und Breite der Symbolleiste in Pixel angeben.

Hinweis

Die Verwendung von CreateToolbarEx wird nicht empfohlen, da neue Funktionen von Symbolleisten, einschließlich Bildlisten, nicht unterstützt werden. Weitere Informationen zum Erstellen von Symbolleisten finden Sie unter Verwenden von Symbolleistensteuerelementen.

 

Die CreateWindowEx-Funktion verfügt über keine Parameter zum Angeben der Symbolleistengröße. Die Symbolleistenfensterprozedur legt automatisch die Größe und Position des Symbolleistenfensters fest. Die Höhe basiert auf der Höhe der Schaltflächen in der Symbolleiste. Die Breite entspricht der Breite des Clientbereichs des übergeordneten Fensters. Um die Einstellungen für die automatische Größe zu ändern, senden Sie eine TB_SETBUTTONSIZE Nachricht. Die CCS_TOP und CCS_BOTTOM gängigen Steuerelementstile bestimmen, ob die Symbolleiste am oberen oder unteren Rand des Clientbereichs positioniert ist. Standardmäßig weist eine Symbolleiste das format CCS_TOP auf.

Außerdem passt die Symbolleistenfensterprozedur automatisch die Größe der Symbolleiste an, wenn sie eine WM_SIZE - oder TB_AUTOSIZE-Nachricht empfängt. Eine Anwendung sollte eine dieser Nachrichten senden, wenn sich die Größe des übergeordneten Fensters ändert oder nachdem eine Nachricht gesendet wurde, die die Größe der Symbolleiste anpassen muss, z. B. eine TB_SETBUTTONSIZE Nachricht.

Das Standardmäßige Größen- und Positionierungsverhalten der Symbolleiste kann durch Festlegen der CCS_NORESIZE und CCS_NOPARENTALIGN gängigen Steuerelementstile deaktiviert werden. Symbolleistensteuerelemente, die von Steuerelementen für die Beleiste gehostet werden, müssen diese Formatvorlagen festlegen, da das Rebar-Steuerelement die Symbolleiste groß und positioniert.

Transparente Symbolleisten

Symbolleistensteuerelemente unterstützen ein transparentes Erscheinungsbild, durch das der Clientbereich unter der Symbolleiste angezeigt werden kann. Es gibt zwei Arten von transparenten Symbolleisten, eine mit flachen Schaltflächen und eine mit dreidimensionalen Schaltflächen. Wenn Ihre Anwendung mit der Windows-Benutzeroberfläche übereinstimmt, verwenden Sie die Symbolleiste im flachen transparenten Stil.

Der folgende Screenshot zeigt die beiden Arten von transparenten Symbolleisten, die keine visuellen Stile verwenden.

Screenshot von zwei Fenstern mit unterschiedlichen Stilen von Symbolleisten, aber beide Symbolleisten sind transparent

Der folgende Screenshot zeigt eine transparente Symbolleiste, wie sie in Windows Vista mit aktivierten visuellen Stilen angezeigt wird. Die Hintergrundfarbe des Dialogfelds wurde geändert, um die Transparenz deutlicher zu machen.

Screenshot eines Fensters in Windows Vista mit einer transparenten Symbolleiste

Zum Erstellen einer transparenten Symbolleiste müssen Sie lediglich dem Fensterformatparameter von CreateWindowExTBSTYLE_FLAT oder TBSTYLE_TRANSPARENT hinzufügen. Wenn keine Zeile angezeigt werden soll, um den unteren Rand der Symbolleiste anzuzeigen, verwenden Sie nicht die WS_BORDER-Fensterformatvorlage.

Hinweis

Wenn Sie visuelle Stile verwenden, sind Symbolleisten möglicherweise standardmäßig flach.

 

Symbolleisten im Listenstil

Mithilfe von Symbolleistenschaltflächen können Sie sowohl Text als auch Bitmaps anzeigen. Die Schaltflächen auf einer Symbolleiste, die mit dem TBSTYLE_LIST Formatvorlage erstellt wurde, platzieren Text rechts neben der Bitmap statt darunter.

Der folgende Screenshot zeigt eine Symbolleiste mit dem Listenformat.

Screenshot einer Symbolleiste mit Text rechts neben jedem Symbol

Sie können den TBSTYLE_LIST Symbolleistenstil in Kombination mit dem stil TBSTYLE_FLAT verwenden, um eine Symbolleiste mit flachen Schaltflächen zu erstellen.

Definieren von Schaltflächenbildern

Es gibt zwei Möglichkeiten, die Bilder für Schaltflächen anzugeben– nach Bitmaps oder Bildlisten. Eine Anwendung muss auswählen, welche Methode verwendet werden soll. Es können nicht beide Methoden mit demselben Symbolleistensteuerelement verwendet werden. Beachten Sie, dass die CreateToolbarEx-Funktion die Bitmapmethode verwendet. Anwendungen, die die Bildlistenmethode verwenden möchten, müssen die CreateWindowEx-Funktion verwenden, um das Symbolleistensteuerelement zu erstellen.

Definieren von Schaltflächenbildern mithilfe von Bitmaps

Jede Schaltfläche in einer Symbolleiste kann ein Bitmapbild enthalten. Eine Symbolleiste verwendet eine interne Liste, um die Informationen zu speichern, die sie zum Zeichnen der Bilder benötigt. Wenn Sie die CreateToolbarEx-Funktion aufrufen, geben Sie eine monochrome oder farbige Bitmap an, die die anfänglichen Bilder enthält, und die Symbolleiste fügt die Informationen der internen Liste der Bilder hinzu. Sie können später mithilfe der meldung TB_ADDBITMAP weitere Bilder hinzufügen.

Jedes Bild verfügt über einen nullbasierten Index. Das erste Bild, das der internen Liste hinzugefügt wird, hat einen Index von 0, das zweite Bild einen Index von 1 usw. TB_ADDBITMAP fügt Am Ende der Liste Bilder hinzu und gibt den Index des ersten hinzugefügten neuen Bilds zurück. Um das Bild einer Schaltfläche zuzuordnen, müssen Sie eine TB_ADDBUTTONS Nachricht senden und den Index des Bilds angeben, nachdem Sie Bitmaps zur internen Bildliste hinzugefügt haben.

Windows geht davon aus, dass alle Bitmapbilder einer Symbolleiste die gleiche Größe haben. Sie geben die Größe an, wenn Sie die Symbolleiste mithilfe von CreateToolbarEx erstellen. Wenn Sie die CreateWindowEx-Funktion zum Erstellen einer Symbolleiste verwenden, wird die Größe der Bilder auf die Standardabmessungen von 16 x 15 Pixel festgelegt. Sie können die TB_SETBITMAPSIZE Meldung verwenden, um die Abmessungen der Bitmapbilder zu ändern. Dies müssen Sie jedoch tun, bevor Sie der internen Liste Bilder hinzufügen.

Definieren von Schaltflächenbildern mithilfe von Bildlisten

Sie können Schaltflächenbilder auch in einer Reihe von Bildlisten speichern. Eine Bildliste ist eine Sammlung von Bildern der gleichen Größe, auf die durch den Index verwiesen werden kann. Bildlisten werden verwendet, um große Mengen von Symbolen oder Bitmaps zu verwalten. Sie können bis zu drei verschiedene Bildlisten verwenden, um Schaltflächen in verschiedenen Zuständen anzuzeigen, wie in der folgenden Tabelle gezeigt.

State Beschreibung
Normal Schaltflächen im Standardzustand.
Hot Schaltflächen, die sich unter dem Zeiger befinden oder gedrückt werden. Heiße Elemente werden nur in Symbolleistensteuerelementen unterstützt, die das TBSTYLE_FLAT Format aufweisen.
Disabled Schaltflächen, die deaktiviert sind.

 

Nachdem die Symbolleiste zerstört wurde, müssen Anwendungen alle von ihnen erstellten Bildlisten freigeben.

Definieren von Text für Schaltflächen

Jede Schaltfläche kann zusätzlich zu oder anstelle eines Bilds eine Zeichenfolge anzeigen. Eine Symbolleiste verwaltet eine interne Liste, die alle für Symbolleistenschaltflächen verfügbaren Zeichenfolgen enthält. Sie fügen der internen Liste Zeichenfolgen hinzu, indem Sie die TB_ADDSTRING Nachricht verwenden und die Adresse des Puffers angeben, der die hinzuzufügenden Zeichenfolgen enthält. Jede Zeichenfolge muss null beendet sein, und die letzte Zeichenfolge muss mit zwei NULL-Zeichen beendet werden.

Jede Zeichenfolge hat einen nullbasierten Index. Die erste Zeichenfolge, die der internen Liste von Zeichenfolgen hinzugefügt wird, hat einen Index von 0, die zweite Zeichenfolge einen Index von 1 usw. TB_ADDSTRING fügt am Ende der Liste Zeichenfolgen hinzu und gibt den Index der ersten neuen Zeichenfolge zurück. Sie verwenden den Index einer Zeichenfolge, um die Zeichenfolge einer Schaltfläche zuzuordnen.

Die Verwendung TB_ADDSTRING ist nicht die einzige Möglichkeit, einer Symbolleiste Zeichenfolgen hinzuzufügen. Sie können eine Zeichenfolge in einer Schaltfläche anzeigen, indem Sie einen Zeichenfolgenzeiger im iString-Element der TBBUTTON-Struktur übergeben, das an TB_ADDBUTTONS übergeben wird. Darüber hinaus können Sie TB_SETBUTTONINFO verwenden, um einer Symbolleistenschaltfläche Text zuzuweisen.

Hinzufügen von Symbolleistenschaltflächen

Wenn Sie die CreateToolbarEx-Funktion zum Erstellen einer Symbolleiste verwenden, können Sie der Symbolleiste Schaltflächen hinzufügen, indem Sie ein Array von TBBUTTON-Strukturen füllen und die Adresse des Arrays im Funktionsaufruf angeben. Die CreateWindowEx-Funktion verfügt jedoch nicht über einen Parameter zum Übergeben einer TBBUTTON-Struktur . CreateWindowEx erstellt eine leere Symbolleiste, die Sie ausfüllen, indem Sie eine TB_ADDBUTTONS Nachricht senden und die Adresse einer TBBUTTON-Struktur angeben.

Nachdem eine Symbolleiste erstellt wurde, können Sie Schaltflächen hinzufügen, indem Sie eine TB_INSERTBUTTON oder TB_ADDBUTTONS Nachricht senden. Jede Schaltfläche wird durch eine TBBUTTON-Struktur beschrieben, die die Attribute der Schaltfläche definiert, einschließlich der Indizes ihrer Zeichenfolge und Bitmap sowie ihres Stils, Zustands, Befehlsbezeichners und anwendungsdefinierter 32-Bit-Wert.

Hinweis

Wenn Sie die CreateWindowEx-Funktion verwenden, um eine Symbolleiste zu erstellen, müssen Sie die TB_BUTTONSTRUCTSIZE Nachricht senden, bevor Sie Schaltflächen hinzufügen. Die Nachricht übergibt die Größe der TBBUTTON-Struktur an die Symbolleiste.

 

Symbolleistenschaltflächenformate

Der Stil einer Schaltfläche bestimmt, wie die Schaltfläche angezeigt wird und wie sie auf Benutzereingaben reagiert. Für instance erstellt der BTNS_BUTTON-Stil eine Symbolleistenschaltfläche, die sich wie eine Standard-Drucktaste verhält. Eine Schaltfläche mit dem BTNS_CHECK Stil ähnelt einer Standard-Drucktaste, mit der Ausnahme, dass sie jedes Mal zwischen dem gedrückten und dem nicht unterdrückten Status umschaltet, wenn der Benutzer darauf klickt.

Sie können Gruppen von Symbolleistenschaltflächen erstellen, die sich wie Optionsfelder verhalten, indem Sie die BTNS_GROUP oder BTNS_CHECKGROUP Format verwenden. Dies führt dazu, dass eine Schaltfläche gedrückt bleibt, bis der Benutzer eine andere Schaltfläche in der Gruppe auswähelt. Eine Gruppe wird als zusammenhängende Auflistung von Schaltflächen definiert, die alle die BTNS_GROUP oder BTNS_CHECKGROUP Format haben.

Der BTNS_SEP-Stils erzeugt eine kleine Lücke zwischen Schaltflächen oder zeichnet eine Ätzung zwischen Schaltflächen auf flachen Symbolleisten. Eine Schaltfläche mit dem BTNS_SEP Stil empfängt keine Benutzereingabe.

Version 5.80 der allgemeinen Steuerelemente führte einige neue Symbolleistenschaltflächenstile ein und benannte einige der älteren Stile um. Alle Schaltflächenformatflags beginnen jetzt mit BTNS_XXX statt mit TBSTYLE_XXX. Eine Auflistung und Diskussion der Schaltflächenstile finden Sie unter Symbolleistensteuerelement und Schaltflächenstile.

Status der Symbolleistenschaltfläche

Jede Schaltfläche in einer Symbolleiste hat einen Zustand. Die Symbolleiste aktualisiert den Status einer Schaltfläche, um Benutzeraktionen wie das Klicken auf die Schaltfläche widerzuspiegeln. Der Status gibt an, ob die Schaltfläche aktuell gedrückt oder nicht gedrückt, aktiviert oder deaktiviert, ausgeblendet oder sichtbar ist. Obwohl eine Anwendung beim Hinzufügen der Schaltfläche zur Symbolleiste den Anfangszustand einer Schaltfläche festlegt, kann sie den Zustand ändern und abrufen, indem sie TB_GETSTATE und TB_SETSTATE Nachrichten an die Symbolleiste sendet. Eine Liste der Symbolleistenschaltflächenzustände finden Sie unter Symbolleistenzustände.

Befehlsbezeichner

Jeder Schaltfläche ist ein anwendungsdefinierter Befehlsbezeichner zugeordnet. Schaltflächenbezeichner werden normalerweise in einer Anwendungsheaderdatei definiert. Beispielsweise kann eine Schaltfläche Einfügen wie folgt definiert werden:

#define ID_PASTE 100

Wenn der Benutzer eine Schaltfläche auswählt, sendet die Symbolleiste dem übergeordneten Fenster eine WM_COMMAND oder WM_NOTIFY Nachricht, die den Befehlsbezeichner der Schaltfläche enthält. Das übergeordnete Fenster untersucht den Befehlsbezeichner und führt den der Schaltfläche zugeordneten Befehl aus. Informationen dazu, wann Steuerelemente WM_COMMAND Nachrichten senden und wann sie WM_NOTIFY senden, finden Sie im Abschnitt Hinweise der WM_NOTIFY-Dokumentation .

Schaltflächengröße und -position

Eine Symbolleiste verfolgt ihre Schaltflächen, indem jeder Schaltfläche ein Positionsindex zugewiesen wird. Der Index ist nullbasiert; Das heißt, die linke Schaltfläche hat einen Index von 0, die nächste Schaltfläche rechts hat einen Index von 1 usw. Eine Anwendung muss den Index einer Schaltfläche angeben, wenn Nachrichten gesendet werden, um Informationen zur Schaltfläche abzurufen oder die Attribute der Schaltfläche festzulegen.

Eine Symbolleiste aktualisiert die Positionsindizes, wenn Schaltflächen eingefügt und entfernt werden. Eine Anwendung kann den aktuellen Positionsindex einer Schaltfläche mithilfe der TB_COMMANDTOINDEX-Nachricht abrufen. Die Meldung gibt den Befehlsbezeichner einer Schaltfläche an, und das Symbolleistenfenster verwendet den Bezeichner, um die Schaltfläche zu suchen und ihren Positionsindex zurückzugeben.

Alle Schaltflächen in einer Symbolleiste haben die gleiche Größe. Die CreateToolbarEx-Funktion erfordert, dass Sie die Anfangsgröße der Schaltflächen festlegen, wenn Sie die Symbolleiste erstellen. Wenn Sie die CreateWindowEx-Funktion verwenden, wird die Anfangsgröße auf die Standarddimensionen von 24 x 22 Pixel festgelegt. Sie können die TB_SETBUTTONSIZE Nachricht verwenden, um die Schaltflächengröße zu ändern. Dies müssen Sie jedoch tun, bevor Sie der Symbolleiste Schaltflächen hinzufügen. Die TB_GETITEMRECT Meldung ruft die aktuellen Dimensionen der Schaltflächen ab.

Wenn Sie eine Zeichenfolge hinzufügen, die länger ist als jede Zeichenfolge, die derzeit auf der Symbolleiste vorhanden ist, setzt die Symbolleiste automatisch die Breite ihrer Schaltflächen zurück. Die Breite ist so festgelegt, dass die längste Zeichenfolge in der Symbolleiste berücksichtigt wird.

Aktivieren der Anpassung

Eine Symbolleiste verfügt über integrierte Anpassungsfeatures, die Sie dem Benutzer zur Verfügung stellen können, indem Sie der Symbolleiste die CCS_ADJUSTABLE gängigen Steuerelementstil geben. Die Anpassungsfunktionen ermöglichen es dem Benutzer, eine Schaltfläche an eine neue Position zu ziehen oder eine Schaltfläche zu entfernen, indem er sie von der Symbolleiste zieht. Darüber hinaus kann der Benutzer auf die Symbolleiste doppelklicken, um das Dialogfeld Symbolleiste anpassen anzuzeigen, in dem der Benutzer Symbolleistenschaltflächen hinzufügen, löschen und neu anordnen kann. Um das Dialogfeld anzuzeigen, verwenden Sie die TB_CUSTOMIZE Meldung. Eine Anwendung bestimmt, ob die Anpassungsfeatures für den Benutzer verfügbar sind, und steuert den Umfang, in dem der Benutzer die Symbolleiste anpassen kann.

Im Rahmen des Anpassungsprozesses müssen Anwendungen häufig den Status einer Symbolleiste speichern und wiederherstellen. Für instance speichern viele Anwendungen den Symbolleistenstatus, bevor der Benutzer mit dem Anpassen der Symbolleiste beginnt, falls der Benutzer die Symbolleiste später in den ursprünglichen Zustand wiederherstellen möchte. Das Symbolleistensteuerelement führt nicht automatisch einen Datensatz über den Prä-Anpassungszustand. Ihre Anwendung muss den Status der Symbolleiste speichern, um ihn wiederherzustellen. Weitere Informationen finden Sie unter Verwenden von Symbolleistensteuerelementen.

Aktivieren der Hot-Tracking-Überwachung

Hot-Tracking bedeutet, dass sich das Erscheinungsbild der Schaltfläche ändert, wenn sich der Zeiger über ein Element bewegt. Wenn visuelle Stile aktiviert sind, unterstützen Symbolleisten standardmäßig hot-tracking. Andernfalls unterstützen nur Symbolleistensteuerelemente, die mit dem TBSTYLE_FLAT-Format erstellt wurden, hot-tracking. Sie können andere Fensterstile in Kombination mit TBSTYLE_FLAT verwenden, um Symbolleisten zu erstellen, die die Hot-Tracking-Funktion ermöglichen, sich aber von einer flachen Symbolleiste unterscheiden. Weitere Informationen finden Sie unter Verwenden von Symbolleistensteuerelementen.