Freigeben über


Statusleisten (Windows-Steuerelemente)

Ein status Balken ist ein horizontales Fenster am unteren Rand eines übergeordneten Fensters, in dem eine Anwendung verschiedene Arten von status Informationen anzeigen kann. Die status Leiste kann in Teile unterteilt werden, um mehr als einen Informationstyp anzuzeigen. Der folgende Screenshot zeigt die status leiste in der Microsoft Windows Paint-Anwendung. In diesem Fall enthält die status leiste den Text "Zur Hilfe klicken Sie im Hilfemenü auf Hilfethemen". Die status leiste ist der Bereich am unteren Rand des Fensters, der Hilfetext und Koordinateninformationen enthält.

Screenshot der Paint-Anwendung mit einer status Leiste, die Hinweise zur Onlinehilfe enthält

In diesem Abschnitt werden folgende Themen behandelt.

Typen und Stile

Die Standardposition einer status Leiste befindet sich am unteren Rand des übergeordneten Fensters. Sie können jedoch die CCS_TOP Formatvorlage angeben, damit sie oben im Clientbereich des übergeordneten Fensters angezeigt wird.

Sie können die SBARS_SIZEGRIP Formatvorlage angeben, um einen Größengriff am rechten Ende der status leiste einzuschließen.

Hinweis

Die Kombination der CCS_TOP und SBARS_SIZEGRIP Wird nicht empfohlen, da der resultierende Größengriff nicht funktionsfähig ist.

 

Größe und Höhe

Die Fensterprozedur für die status leiste legt automatisch die Anfangsgröße und Position des Fensters fest, wobei die in der CreateWindowEx-Funktion angegebenen Werte ignoriert werden. Die Breite entspricht der des Clientbereichs des übergeordneten Fensters. Die Höhe basiert auf den Metriken der Schriftart, die derzeit im Gerätekontext des status Balkens ausgewählt ist, und auf der Breite der Fensterränder.

Die Fensterprozedur passt die Größe des status Balkens automatisch an, wenn eine WM_SIZE Nachricht empfangen wird. Wenn sich die Größe des übergeordneten Fensters ändert, sendet das übergeordnete Fenster in der Regel eine WM_SIZE-Nachricht an die status leiste.

Eine Anwendung kann die Minimale Höhe des Zeichenbereichs eines status Balkens festlegen, indem dem Fenster eine SB_SETMINHEIGHT Nachricht gesendet wird, die die Mindesthöhe in Pixel angibt. Der Zeichnungsbereich enthält keine Rahmen des Fensters. Eine Mindesthöhe ist nützlich, um eine vom Besitzer gezeichnete status Balken zu zeichnen. Weitere Informationen finden Sie weiter unten in diesem Kapitel unter Statusleisten für besitzergezeichnete Balken .

Sie rufen die Breite der Rahmen einer status leiste ab, indem Sie dem Fenster eine SB_GETBORDERS Nachricht senden. Die Nachricht enthält die Adresse eines Arrays mit drei Elementen, das die Breiten empfängt.

Multiple-Part Statusleisten

Ein status Balken kann viele verschiedene Teile aufweisen, die jeweils eine andere Textzeile anzeigen. Sie teilen einen status Balken in Teile auf, indem Sie dem Fenster eine SB_SETPARTS Nachricht senden und dabei die Anzahl der zu erstellenden Teile und die Adresse eines ganzzahligen Arrays angeben. Das Array enthält ein Element für jeden Teil, und jedes Element gibt die Clientkoordinate des rechten Rands eines Teils an.

Ein status Balken kann maximal 256 Teile umfassen, obwohl Anwendungen in der Regel viel weniger verwenden. Sie rufen die Anzahl der Teile in einem status-Balken sowie die Koordinate des rechten Rands jedes Teils ab, indem Sie dem Fenster eine SB_GETPARTS Nachricht senden.

Statusleistentextvorgänge

Sie legen den Text eines beliebigen Teils eines status balkens fest, indem Sie die SB_SETTEXT Nachricht senden und dabei den nullbasierten Index eines Teils, eine Adresse der im Teil zeichnenden Zeichenfolge und die Technik zum Zeichnen der Zeichenfolge angeben. Die Zeichnungstechnik bestimmt, ob der Text einen Rahmen hat, und, wenn dies der Fall ist, den Stil des Rahmens. Außerdem wird bestimmt, ob das übergeordnete Fenster für das Zeichnen des Texts zuständig ist. Weitere Informationen finden Sie weiter unten im Abschnitt Vom Besitzer gezeichnete Statusleisten .

Standardmäßig ist Text innerhalb des angegebenen Teils einer status leiste links ausgerichtet. Sie können Tabstoppzeichen (\ t) in den Text einbetten, um ihn zu zentrieren oder rechts auszurichten. Text rechts von einem einzelnen Registerkartenzeichen ist zentriert, und Text rechts neben einem zweiten Registerkartenzeichen ist rechtsbündig ausgerichtet.

Um Text aus einer status leiste abzurufen, verwenden Sie die SB_GETTEXTLENGTH und SB_GETTEXT Nachrichten.

Wenn Ihre Anwendung einen status Balken verwendet, der nur aus einem Teil besteht, können Sie die WM_SETTEXT, WM_GETTEXT und WM_GETTEXTLENGTH Nachrichten verwenden, um Textvorgänge auszuführen. Diese Nachrichten befassen sich nur mit dem Teil, der über einen Index von 0 (null) verfügt, sodass Sie den status Balken ähnlich einem statischen Textsteuerelement behandeln können.

Verwenden Sie die DrawStatusText-Funktion, um eine Zeile mit status anzuzeigen, ohne eine status leiste zu erstellen. Die Funktion verwendet die gleichen Techniken, um die status wie die Fensterprozedur für die status leiste zu zeichnen, legt jedoch nicht automatisch die Größe und Position der status Informationen fest. Beim Aufrufen der Funktion müssen Sie die Größe und Position der status Informationen sowie den Gerätekontext des Fensters angeben, in dem sie gezeichnet werden soll.

Owner-Drawn Statusleisten

Sie können einzelne Teile eines status Balkens definieren, um teile vom Besitzer gezeichnet zu werden. Mit dieser Technik haben Sie mehr Kontrolle über die Darstellung des Fensterteils, als sie andernfalls hätten. Sie können beispielsweise eine Bitmap anstelle von Text anzeigen oder Text mit einer anderen Schriftart zeichnen.

Um ein Fensterteil als vom Besitzer gezeichnet zu definieren, senden Sie die SB_SETTEXT Nachricht an die status leiste, und geben Sie dabei den Teil und die SBT_OWNERDRAW Zeichnungstechnik an. Wenn SBT_OWNERDRAW angegeben ist, ist der lParam-Parameter ein 32-Bit-anwendungsdefinierter Wert, den die Anwendung beim Zeichnen des Teils verwenden kann. Sie können beispielsweise ein Schriftarthandle, ein Bitmaphandle, eine Adresse einer Zeichenfolge usw. angeben.

Wenn ein status Balken ein vom Besitzer gezeichnetes Teil zeichnen muss, sendet er die WM_DRAWITEM Nachricht an das übergeordnete Fenster. Der wParam-Parameter der Nachricht ist der bezeichner des untergeordneten Fensters der status leiste, und der Parameter lParam ist die Adresse einer DRAWITEMSTRUCT-Struktur. Das übergeordnete Fenster verwendet die Informationen in der -Struktur, um den Teil zu zeichnen. Für einen vom Besitzer gezeichneten Teil einer status Leiste enthält DRAWITEMSTRUCT die folgenden Informationen.

Member BESCHREIBUNG
CtlType Undefined; nicht verwenden.
CtlID Bezeichner des untergeordneten Fensters der status leiste.
Itemid Nullbasierter Index des zu zeichnenden Teils.
itemAction Undefined; nicht verwenden.
itemState Undefined; nicht verwenden.
hwndItem Ziehpunkt zur status leiste.
Hdc Handle für den Gerätekontext der status leiste.
rcItem Koordinaten des zu zeichnenden Fensterteils. Die Koordinaten sind relativ zur oberen linken Ecke des status Balkens.
Itemdata Anwendungsdefinierter 32-Bit-Wert, der im lParam-Parameter der SB_SETTEXT Meldung angegeben ist.

 

Statusleisten im einfachen Modus

Sie setzen eine status Leiste in den "einfachen Modus", indem Sie ihr eine SB_SIMPLE Nachricht senden. Ein einfacher Modus status Leiste zeigt nur einen Teil an. Wenn der Text des Fensters festgelegt ist, wird das Fenster ungültig, aber es wird erst beim nächsten WM_PAINT neu gezeichnet. Das Warten auf die Nachricht reduziert das Flimmern des Bildschirms, indem die Anzahl der Neuzeichnen des Fensters minimiert wird. Ein einfacher Modus status Leiste ist nützlich, um Hilfetext für Menüelemente anzuzeigen, während der Benutzer durch das Menü scrollt.

Die Zeichenfolge, die von einer status leiste im einfachen Modus angezeigt wird, wird getrennt von den Zeichenfolgen verwaltet, die im Nichtimple-Modus angezeigt werden. Dies bedeutet, dass Sie das Fenster in den einfachen Modus versetzen, den Text festlegen und wieder in den Nichtimple-Modus wechseln können, ohne dass der Text im nicht einfachen Modus geändert wird.

Wenn Sie den Text eines einfachen Modus status Balken festlegen, können Sie eine beliebige Zeichnungstechnik außer SBT_OWNERDRAW angeben. Ein einfacher Modus status Balken unterstützt das Zeichnen des Besitzers nicht.

Standardmäßige Statusleisten-Nachrichtenverarbeitung

In diesem Abschnitt werden die Meldungen beschrieben, die von der Fensterprozedur für die vordefinierte STATUSCLASSNAME-Klasse behandelt werden.

Nachricht Standardverarbeitung
WM_CREATE Initialisiert die status leiste.
WM_DESTROY Gibt Ressourcen frei, die für die status-Leiste zugewiesen sind.
WM_GETFONT Gibt das Handle auf die aktuelle Schriftart zurück, mit der die status leiste ihren Text zeichnet.
WM_GETTEXT Kopiert den Text aus dem ersten Teil einer status leiste in einen Puffer. Es gibt einen 32-Bit-Wert zurück, der die Länge des Texts in Zeichen und die Zum Zeichnen des Texts verwendete Technik angibt.
WM_GETTEXTLENGTH Gibt einen 32-Bit-Wert zurück, der die Länge des Texts im ersten Teil einer status leiste in Zeichen und die Zum Zeichnen des Texts verwendete Technik angibt.
WM_NCHITTEST Gibt den WERT HTBOTTOMRIGHT zurück, wenn sich der Mauscursor im Größengriff befindet, wodurch das System den Größencursor anzeigt. Wenn sich der Mauscursor nicht im Größengriff befindet, übergibt die status leiste diese Meldung an die DefWindowProc-Funktion.
WM_PAINT Zeichnet den ungültigen Bereich des status Balkens. Wenn der wParam-Parameter nicht NULL ist, geht das Steuerelement davon aus, dass der Wert ein HDC ist, und zeichnet mit diesem Gerätekontext.
WM_SETFONT Wählt das Schrifthandle im Gerätekontext für die status leiste aus.
WM_SETTEXT Kopiert den angegebenen Text mithilfe des Standardzeichnungsvorgangs (null) in den ersten Teil einer status leiste. Bei erfolgreicher Ausführung wird TRUE zurückgegeben, andernfalls FALSE .
WM_SIZE Ändert die Größe der status leiste basierend auf der aktuellen Breite des Clientbereichs des übergeordneten Fensters und der Höhe der aktuellen Schriftart der status leiste.