Freigeben über


Informationen zu Trackbar-Steuerelementen

Eine Trackleiste ist ein Fenster, das einen Schieberegler (auch als Daumen bezeichnet) in einem Kanal und optionale Teilstriche enthält. Wenn der Benutzer den Schieberegler mithilfe der Maus oder der Richtungstasten bewegt, sendet die Trackleiste Benachrichtigungen, um die Änderung anzuzeigen.

Trackbars sind nützlich, wenn Der Benutzer einen diskreten ganzzahligen Wert ohne Vorzeichen oder einen Satz aufeinanderfolgender ganzzahliger Werte ohne Vorzeichen in einem Bereich auswählen soll. Sie können z. B. eine Trackleiste verwenden, damit der Benutzer die Wiederholungsrate der Tastatur festlegen kann, indem er den Schieberegler auf ein bestimmtes Teilstrich bewegt. Die folgende Abbildung zeigt eine typische Trackleiste.

Screenshot einer Trackleiste mit Bezeichnungen an den Enden für langsam und schnell

Der Schieberegler in einer Trackleiste wird in Schritten verschoben, die Sie beim Erstellen angeben. Die Werte in diesem Bereich werden als logische Einheiten bezeichnet. Wenn Sie beispielsweise angeben, dass die Trackleiste logische Einheiten zwischen 0 und 5 aufweisen soll, kann der Schieberegler nur sechs Positionen belegen: eine Position auf der linken Seite der Trackleiste und eine Position für jedes Inkrement im Bereich. In der Regel wird jede dieser Positionen durch ein Teilstrich gekennzeichnet; Die Anzahl der Teilstriche ist jedoch beliebig und kann kleiner als die Anzahl der logischen Positionen sein.

Sie erstellen eine Trackbar, indem Sie die CreateWindowEx-Funktion verwenden und dabei die TRACKBAR_CLASS Fensterklasse angeben. Nachdem Sie eine Trackbar erstellt haben, können Sie trackbar-Nachrichten verwenden, um viele ihrer Eigenschaften festzulegen und abzurufen. Zu den Änderungen, die Sie vornehmen können, gehören das Festlegen der minimalen und maximalen Positionen für den Schieberegler, das Zeichnen von Teilstrichen, das Festlegen eines Auswahlbereichs und das Neupositionieren des Schiebereglers.

Auswahlbereich

Wenn Sie eine Trackbar mit der TBS_ENABLESELRANGE Formatvorlage erstellen, können Sie einen Auswahlbereich angeben. Die Trackleiste hebt den Auswahlbereich hervor und zeigt dreieckige Teilstriche am Anfang und Ende an, wie in der folgenden Abbildung dargestellt.

Screenshot einer Trackleiste mit hervorgehobenem Bereich

Der Auswahlbereich der Trackleiste wirkt sich in keiner Weise auf die Funktionalität aus. Es liegt an der Anwendung, den Bereich zu implementieren. Dies kann auf eine der folgenden Arten erfolgen:

  • Verwenden Sie einen Auswahlbereich, damit der Benutzer maximale und minimale Werte für einige Parameter festlegen kann. Beispielsweise könnte der Benutzer den Schieberegler an eine Position verschieben und dann auf eine Schaltfläche mit der Bezeichnung "Max" klicken. Die Anwendung legt dann den Auswahlbereich so fest, dass die vom Benutzer ausgewählten Werte angezeigt werden.
  • Beschränken Sie die Bewegung des Schiebereglers auf einen vordefinierten Teilbereich innerhalb des Steuerelements, indem Sie die WM_HSCROLL oder WM_VSCROLL Benachrichtigung behandeln und jede Bewegung außerhalb des Auswahlbereichs nicht mehr verwenden. Dies können Sie beispielsweise tun, wenn sich der wertebereich, der dem Benutzer zur Verfügung steht, aufgrund anderer Entscheidungen, die der Benutzer getroffen hat, oder gemäß den verfügbaren Ressourcen ändern kann.

Trackbar-Nachrichten

Die logischen Einheiten einer Trackbar sind der Satz zusammenhängender Werte, die die Trackleiste darstellen kann. Sie werden in der Regel definiert, indem der Bereich möglicher Werte mit einer TBM_SETRANGE Nachricht angegeben wird, sobald die Trackleiste erstellt wurde. Anwendungen können den Bereich mithilfe von TBM_SETRANGE, TBM_SETRANGEMAX oder TBM_SETRANGEMIN dynamisch ändern.

Verwenden Sie die TBM_GETPOS Meldung, um die Position des Schiebereglers abzurufen (d. h. den vom Benutzer ausgewählten Wert). Um die Position des Schiebereglers festzulegen, verwenden Sie die meldung TBM_SETPOS .

Eine Trackleiste zeigt automatisch Teilstriche am Anfang und Ende an, es sei denn, Sie geben die TBS_NOTICKS Formatvorlage an. (Im Microsoft Visual Studio-Ressourcen-Editor bedeutet dies, dass die Eigenschaft Tick Marks auf False festgelegt wird.) Sie können den TBS_AUTOTICKS Stil verwenden, um in regelmäßigen Abständen automatisch zusätzliche Teilstriche entlang der Trackleiste anzuzeigen. Standardmäßig zeigt eine TBS_AUTOTICKS Trackleiste bei jedem Inkrement des Bereichs der Trackleiste ein Teilstrich an. Um ein anderes Intervall für die automatischen Teilstriche anzugeben, senden Sie die TBM_SETTICFREQ Nachricht an die Trackleiste. Sie können diese Meldung beispielsweise verwenden, um nur 10 Teilstriche in einem Bereich von 1 bis 100 anzuzeigen.

Um die Position eines einzelnen Teilstrichs festzulegen, senden Sie die TBM_SETTIC Nachricht. Eine Trackbar verwaltet ein Array von DWORD-Werten, in dem die Position der einzelnen Teilstriche gespeichert wird. Das Array enthält nicht die ersten und letzten Teilstriche, die von der Trackleiste automatisch erstellt werden. Sie können einen Index in diesem Array angeben, wenn Sie die TBM_GETTIC Nachricht senden, um die Position des entsprechenden Teilstrichs abzurufen. Alternativ können Sie die TBM_GETPTICS Nachricht senden, um einen Zeiger auf das Array abzurufen. Die Anzahl der Elemente im Array ist gleich zwei weniger als die Anzahl von Teilstrichen, die von der TBM_GETNUMTICS Nachricht zurückgegeben werden. Dies liegt daran, dass die von TBM_GETNUMTICS zurückgegebene Anzahl die ersten und letzten Teilstriche enthält, die nicht im Array enthalten sind. Um die physische Position eines Teilstrichs abzurufen, senden Sie in Clientkoordinaten des Trackleistenfensters die TBM_GETTICPOS Nachricht. Die TBM_CLEARTICS Meldung entfernt alle Teilstriche außer dem ersten und dem letzten Teilstrich einer Trackleiste.

Die Liniengröße einer Trackleiste bestimmt, wie weit sich der Schieberegler als Reaktion auf Tastatureingaben der Pfeiltasten bewegt, z. B. nach-RECHTS- oder NACH-UNTEN-TASTE. Um die Zeilengröße abzurufen oder festzulegen, senden Sie die TBM_GETLINESIZE und TBM_SETLINESIZE Nachrichten. Die Trackleiste sendet auch die TB_LINEUP und TB_LINEDOWN Benachrichtigungscodes an das übergeordnete Fenster, wenn der Benutzer die Pfeiltasten drückt.

Die Seitengröße einer Trackleiste bestimmt, wie weit sich der Schieberegler als Reaktion auf Tastatureingaben bewegt, z. B. die BILD-AUF- oder BILD-NACH-UNTEN-TASTE oder mauseingaben, z. B. Klicks im Trackleistenkanal. Um die Seitengröße abzurufen oder festzulegen, senden Sie die TBM_GETPAGESIZE und TBM_SETPAGESIZE Nachrichten. Die Trackleiste sendet auch die TB_PAGEUP und TB_PAGEDOWN Benachrichtigungscodes an das übergeordnete Fenster, wenn sie Tastatur- oder Mauseingaben empfängt, die auf der Seite scrollen. Weitere Informationen finden Sie unter Trackbar-Benachrichtigungen.

Eine Anwendung kann Nachrichten senden, um die Dimensionen einer Trackbar abzurufen. Die TBM_GETTHUMBRECT Meldung ruft das umgebende Rechteck für den Schieberegler ab. Die TBM_GETTHUMBLENGTH Meldung ruft die Länge des Schiebereglers ab. Die TBM_GETCHANNELRECT Meldung ruft das umgebende Rechteck für den Kanal der Trackleiste ab. Dabei handelt es sich um den Bereich, über den sich der Schieberegler bewegt. Sie enthält die Hervorhebung, wenn ein Bereich ausgewählt wird. Wenn eine Trackleiste das TBS_FIXEDLENGTH Format aufweist, können Sie die TBM_SETTHUMBLENGTH Nachricht senden, um die Länge des Schiebereglers zu ändern.

Sie können den Auswahlbereich abrufen oder festlegen, indem Sie Nachrichten an die Trackleiste senden. Verwenden Sie die TBM_SETSEL Meldung, um die Anfangs- und Endposition einer Auswahl festzulegen. Um nur die Anfangsposition oder nur die Endposition einer Auswahl festzulegen, senden Sie eine TBM_SETSELSTART oderTBM_SETSELEND Nachricht. Um die Anfangs- oder Endposition eines Auswahlbereichs abzurufen, senden Sie eine TBM_GETSELSTART oderTBM_GETSELEND Nachricht. Um einen Auswahlbereich zu löschen und die Trackleiste in ihren ursprünglichen Bereich wiederherzustellen, senden Sie die TBM_CLEARSEL Nachricht.

Hinweis

Es liegt in der Verantwortung der Anwendung sicherzustellen, dass der Benutzer werte außerhalb des Auswahlbereichs nicht auswählen kann. Das Steuerelement selbst hindert den Benutzer nicht daran, den Schieberegler außerhalb des Bereichs zu verschieben.

 

Trackbar-Benachrichtigungen

Eine Trackbar benachrichtigt das übergeordnete Fenster über Benutzeraktionen, indem dem übergeordneten Element eine WM_HSCROLL oder WM_VSCROLL Nachricht gesendet wird. Eine Trackbar mit der TBS_HORZ-Formatvorlage sendet WM_HSCROLL Nachrichten. Eine Trackbar mit der TBS_VERT-Formatvorlage sendet WM_VSCROLL Nachrichten. Das Wort in niedriger Reihenfolge des wParam-Parameters von WM_HSCROLL oder WM_VSCROLL enthält den Benachrichtigungscode. Für die Benachrichtigungscodes TB_THUMBPOSITION und TB_THUMBTRACK gibt das Wort mit hoher Ordnung des wParam-Parameters die Position des Schiebereglers an. Für alle anderen Benachrichtigungscodes ist das Wort mit hoher Ordnung null; die TBM_GETPOS-Nachricht senden, um die Schiebereglerposition zu bestimmen. Der lParam-Parameter ist das Handle für die Trackleiste.

Das System sendet die Benachrichtigungscodes TB_BOTTOM, TB_LINEDOWN, TB_LINEUP und TB_TOP nur, wenn der Benutzer über die Tastatur mit einer Trackleiste interagiert. Die Benachrichtigungscodes TB_THUMBPOSITION und TB_THUMBTRACK werden nur gesendet, wenn der Benutzer die Maus verwendet. Die Benachrichtigungscodes TB_ENDTRACK, TB_PAGEDOWN und TB_PAGEUP werden in beiden Fällen gesendet. In der folgenden Tabelle sind die Trackbar-Benachrichtigungscodes und die Ereignisse (virtuelle Schlüsselcodes oder Mausereignisse) aufgeführt, die dazu führen, dass die Benachrichtigungen für virtuelle Schlüsselcodesgesendet werden.

Benachrichtigungscode Grund gesendet
TB_BOTTOM VK_END
TB_ENDTRACK WM_KEYUP (der Benutzer hat einen Schlüssel freigegeben, der einen relevanten virtuellen Schlüsselcode gesendet hat)
TB_LINEDOWN VK_RIGHT oder VK_DOWN
TB_LINEUP VK_LEFT oder VK_UP
TB_PAGEDOWN VK_NEXT (der Benutzer hat unten oder rechts neben dem Schieberegler auf den Kanal geklickt)
TB_PAGEUP VK_PRIOR (der Benutzer hat oben oder links neben dem Schieberegler auf den Kanal geklickt)
TB_THUMBPOSITION WM_LBUTTONUP einem TB_THUMBTRACK-Benachrichtigungscode folgen
TB_THUMBTRACK Schiebereglerbewegung (der Benutzer hat den Schieberegler gezogen)
TB_TOP VK_HOME

 

Standardmäßige Trackbar-Nachrichtenverarbeitung

In diesem Abschnitt wird die Fensternachrichtenverarbeitung beschrieben, die von einer Trackleiste ausgeführt wird.

Nachricht Durchgeführte Verarbeitung
WM_CAPTURECHANGED Beendet den Timer, wenn während WM_LBUTTONDOWN Verarbeitung festgelegt wurde, und sendet bei Bedarf den TB_THUMBPOSITION Benachrichtigungscode. Es sendet immer den TB_ENDTRACK Benachrichtigungscode.
WM_CREATE Führt eine zusätzliche Initialisierung durch, z. B. das Festlegen von Zeilengröße, Seitengröße und Teilstrichhäufigkeit auf Standardwerte.
WM_DESTROY Gibt Ressourcen frei.
WM_ENABLE Streicht das Trackleistenfenster neu.
WM_ERASEBKGND Löscht den Fensterhintergrund unter Verwendung der aktuellen Hintergrundfarbe für die Trackleiste.
WM_GETDLGCODE Gibt den DLGC_WANTARROWS Wert zurück.
WM_KEYDOWN Verarbeitet die Richtungsschlüssel und sendet die Benachrichtigungscodes TB_TOP, TB_BOTTOM, TB_PAGEUP, TB_PAGEDOWN, TB_LINEUP und TB_LINEDOWN.
WM_KEYUP Sendet den TB_ENDTRACK Benachrichtigungscode, wenn der Schlüssel eine der Richtungstasten war.
WM_KILLFOCUS Streicht das Trackleistenfenster neu.
WM_LBUTTONDOWN Legt den Fokus und die Mausaufnahme auf die Trackleiste fest. Bei Bedarf wird ein Timer festgelegt, der bestimmt, wie schnell sich der Schieberegler zum Mauszeiger bewegt, wenn der Benutzer die Maustaste im Fenster gedrückt hält.
WM_LBUTTONUP Gibt die Mausaufnahme frei und beendet den Timer, wenn während WM_LBUTTONDOWN Verarbeitung festgelegt wurde. Bei Bedarf wird der TB_THUMBPOSITION Benachrichtigungscode gesendet. Es sendet immer den TB_ENDTRACK Benachrichtigungscode.
WM_MOUSEMOVE Verschiebt den Schieberegler und sendet den TB_THUMBTRACK Benachrichtigungscode, wenn die Maus nachverfolgt wird (siehe WM_TIMER).
WM_PAINT Zeichnet die Trackleiste. 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_SETFOCUS Streicht das Trackleistenfenster neu.
WM_SIZE Legt die Abmessungen der Trackleiste fest und entfernt den Schieberegler, wenn nicht genügend Platz zum Anzeigen vorhanden ist.
WM_TIMER Ruft die Mausposition ab und aktualisiert die Position des Schiebereglers. (Sie wird nur empfangen, wenn der Benutzer den Schieberegler zieht.)
WM_WININICHANGE Initialisiert Schiebereglerdimensionen.

 

QuickInfos für die Trackleiste

Eine Trackbar, die mit dem TBS_TOOLTIPS-Stil erstellt wird, verfügt über ein Standardmäßig-QuickInfo-Steuerelement. Die QuickInfo bleibt sichtbar und zeigt den aktuellen Wert an, während der Benutzer den Schieberegler mit der Maus zieht.

Sie können einer Trackleiste ein neues QuickInfo-Steuerelement zuweisen, indem Sie die TBM_SETTOOLTIPS Nachricht senden. Um das Handle für ein zugewiesenes QuickInfo-Steuerelement abzurufen, verwenden Sie die TBM_GETTOOLTIPS Meldung.