Informazioni sui controlli TrackBar

Un TrackBar è una finestra che contiene un dispositivo di scorrimento (talvolta denominato Thumb) in un canale e segni di graduazione facoltativi. Quando l'utente sposta il dispositivo di scorrimento usando il mouse o i tasti di direzione, il TrackBar invia messaggi di notifica per indicare la modifica.

Gli TrackBar sono utili quando si desidera che l'utente selezioni un valore Unsigned Integer discreto o un set di valori Unsigned Integer consecutivi in un intervallo. Ad esempio, è possibile utilizzare un TrackBar per consentire all'utente di impostare la frequenza di ripetizione della tastiera spostando il dispositivo di scorrimento su un segno di graduazione specificato. Nella figura seguente viene illustrato un TrackBar tipico.

Screenshot di un TrackBar con etichette alle estremità per lenti e veloci

Il dispositivo di scorrimento in un TrackBar si sposta in incrementi specificati al momento della creazione. I valori in questo intervallo sono detti unità logiche. Se, ad esempio, si specifica che l'oggetto TrackBar deve avere unità logiche che variano da 0 a 5, il dispositivo di scorrimento può occupare solo sei posizioni: una posizione sul lato sinistro del TrackBar e una posizione per ogni incremento nell'intervallo. In genere, ciascuna di queste posizioni è identificata da un segno di graduazione. Tuttavia, il numero di segni di graduazione è arbitrario e può essere inferiore al numero di posizioni logiche.

Per creare un TrackBar, utilizzare la funzione CreateWindowEx , specificando la classe della finestra della _ classe TrackBar . Dopo aver creato un TrackBar, è possibile utilizzare i messaggi TrackBar per impostare e recuperare molte delle relative proprietà. Le modifiche effettuabili includono l'impostazione delle posizioni minima e massima per il dispositivo di scorrimento, il disegno di segni di graduazione, l'impostazione di un intervallo di selezione e il riposizionamento del dispositivo di scorrimento.

Intervallo di selezione

Se si crea un TrackBar con lo stile TBS _ ENABLESELRANGE , è possibile specificare un intervallo di selezione. Il TrackBar evidenzia l'intervallo di selezione e Visualizza i segni di graduazione triangolari all'inizio e alla fine, come illustrato nella figura seguente.

Screenshot di un TrackBar con un intervallo evidenziato

L'intervallo di selezione del TrackBar non influisce in alcun modo sulle relative funzionalità. Spetta all'applicazione implementare l'intervallo. Questa operazione può essere eseguita in uno dei modi seguenti:

  • Utilizzare un intervallo di selezione per consentire all'utente di impostare i valori massimo e minimo per alcuni parametri. Ad esempio, l'utente potrebbe spostare il dispositivo di scorrimento in una posizione e quindi fare clic su un pulsante con etichetta "Max". L'applicazione imposta quindi l'intervallo di selezione per visualizzare i valori scelti dall'utente.
  • Limitare lo spostamento del dispositivo di scorrimento a un intervallo secondario predeterminato all'interno del controllo, gestendo la notifica WM _ HSCROLL o WM _ VSCROLL e non consentire lo spostamento al di fuori dell'intervallo di selezione. Questa operazione può essere eseguita, ad esempio, se l'intervallo di valori disponibili per l'utente può cambiare a causa di altre scelte effettuate dall'utente o in base alle risorse disponibili.

Messaggi TrackBar

Le unità logiche di un TrackBar sono il set di valori contigui che possono essere rappresentati da TrackBar. Vengono in genere definite specificando l'intervallo di valori possibili con un messaggio di _ SetRange TBM non appena il TrackBar è stato creato. Le applicazioni possono modificare dinamicamente l'intervallo usando TBM _ SetRange, TBM _ SETRANGEMAXo TBM _ SETRANGEMIN.

Per recuperare la posizione del dispositivo di scorrimento (ovvero il valore scelto dall'utente), usare il messaggio TBM _ GETPOS . Per impostare la posizione del dispositivo di scorrimento, utilizzare il messaggio TBM _ SETPOS .

Un TrackBar Visualizza automaticamente i segni di graduazione all'inizio e alla fine, a meno che non si specifichi lo stile TBS nosegni di _ spunta . Nell'editor di risorse Microsoft Visual Studio questo significa impostare la proprietà dei segni di graduazione su false. Per visualizzare automaticamente segni di graduazione aggiuntivi a intervalli regolari lungo il TrackBar, è possibile usare lo stile TBS _ autograduates . Per impostazione predefinita, un indicatore di scorrimento automatico di TBS Visualizza un segno di graduazione a ogni incremento dell'intervallo del TrackBar. _ Per specificare un intervallo diverso per i segni di graduazione automatici, inviare il messaggio _ SETTICFREQ TBM al TrackBar. Ad esempio, è possibile usare questo messaggio per visualizzare solo 10 segni di graduazione in un intervallo compreso tra 1 e 100.

Per impostare la posizione di un segno di graduazione singolo, inviare il messaggio _ SETTIC TBM . Un TrackBar mantiene una matrice di valori DWORD che archivia la posizione di ogni segno di graduazione. La matrice non include il primo e l'ultimo segno di graduazione, che il TrackBar crea automaticamente. È possibile specificare un indice in questa matrice quando si invia il messaggio _ Getter TBM per recuperare la posizione del segno di graduazione corrispondente. In alternativa, è possibile inviare il messaggio _ GETPTICS TBM per recuperare un puntatore alla matrice. Il numero di elementi nella matrice è uguale a due minori rispetto al conteggio restituito dal messaggio _ GETNUMTICS TBM . Questo perché il numero restituito da TBM _ GETNUMTICS include il primo e l'ultimo segno di graduazione, che non sono inclusi nella matrice. Per recuperare la posizione fisica di un segno di graduazione, in coordinate client della finestra del TrackBar, inviare il messaggio _ GETTICPOS TBM . Il messaggio TBM _ CLEARTICS rimuove tutti i segni di graduazione di un TrackBar, tranne il primo e l'ultimo.

Le dimensioni di riga di un TrackBar determinano la distanza di spostamento del dispositivo di scorrimento in risposta all'input da tastiera dei tasti di direzione, ad esempio la freccia destra o il tasto freccia giù. Per recuperare o impostare le dimensioni della riga, inviare i messaggi TBM _ GETLINESIZE e TBM _ SETLINESIZE . TrackBar invia inoltre i _ codici di notifica TB TB e TB _ LINEDOWN alla finestra padre quando l'utente preme i tasti di direzione.

Le dimensioni di pagina di un TrackBar determinano la distanza di spostamento del dispositivo di scorrimento in risposta a input da tastiera, ad esempio il tasto PGSU o PGGIÙ o l'input del mouse, ad esempio i clic nel canale TrackBar. Per recuperare o impostare le dimensioni della pagina, inviare i messaggi TBM _ GetPageSize e TBM _ di. TrackBar invia inoltre i _ codici di notifica TB PAGEUP e TB _ PGGIÙ alla finestra padre quando riceve l'input della tastiera o del mouse che scorre la pagina. Per ulteriori informazioni, vedere la pagina relativa ai messaggi di notifica TrackBar.

Un'applicazione può inviare messaggi per recuperare le dimensioni di un TrackBar. Il messaggio TBM _ GETTHUMBRECT Recupera il rettangolo di delimitazione per il dispositivo di scorrimento. Il messaggio TBM _ GETTHUMBLENGTH recupera la lunghezza del dispositivo di scorrimento. Il messaggio TBM _ GETCHANNELRECT Recupera il rettangolo di delimitazione per il canale del TrackBar, ovvero l'area su cui si sposta il dispositivo di scorrimento. Contiene l'evidenziazione quando viene selezionato un intervallo. Se un TrackBar ha lo stile TBS _ FIXEDLENGTH , è possibile inviare il messaggio TBM _ SETTHUMBLENGTH per modificare la lunghezza del dispositivo di scorrimento.

Per recuperare o impostare l'intervallo di selezione, inviare messaggi al TrackBar. Usare il messaggio _ SETSEL TBM per impostare le posizioni di inizio e fine di una selezione. Per impostare solo la posizione iniziale o solo la posizione finale di una selezione, inviare un messaggio TBM _ SETSELSTART o TBM _ seselend . Per recuperare le posizioni iniziali o finali di un intervallo di selezione, inviare un messaggio TBM _ GETSELSTART o TBM _ getselend . Per cancellare un intervallo di selezione e ripristinare il valore di TrackBar nell'intervallo originale, inviare il messaggio _ CLEARSEL TBM .

Nota

È responsabilità dell'applicazione assicurarsi che l'utente non possa selezionare valori non compresi nell'intervallo di selezione. Il controllo stesso non impedisce all'utente di spostarlo all'esterno dell'intervallo.

 

Messaggi di notifica TrackBar

Un TrackBar notifica alla finestra padre le azioni dell'utente inviando al padre un messaggio WM _ HSCROLL o WM _ VSCROLL . Un TrackBar con lo stile TBS _ orizzontalmente invia messaggi WM _ HSCROLL . Un TrackBar con lo stile di TBS _ Vert invia messaggi WM _ VSCROLL . La parola più bassa del parametro wParam di WM _ HSCROLL o WM _ VSCROLL contiene il codice di notifica. Per i _ codici di notifica TB THUMBPOSITION e TB _ THUMBTRACK, la parola più ordinata del parametro wParam specifica la posizione del dispositivo di scorrimento. Per tutti gli altri codici di notifica, la parola più ordinata è zero; inviare il messaggio TBM _ GETPOS per determinare la posizione del dispositivo di scorrimento. Il parametro lParam è l'handle per l'oggetto TrackBar.

Il sistema invia i _ _ codici di notifica principali TB, TB LINEDOWN, TB _ e TB _ solo quando l'utente interagisce con un TrackBar usando la tastiera. I _ codici di notifica TB THUMBPOSITION e TB _ THUMBTRACK vengono inviati solo quando l'utente usa il mouse. I _ codici di notifica TB ENDTRACK, TB _ PGGIÙ e TB _ PAGEUP vengono inviati in entrambi i casi. Nella tabella seguente sono elencati i codici di notifica TrackBar e gli eventi (codici chiave virtuali o eventi del mouse) che causano l'invio delle notifiche dei codici di chiave virtuale.

Codice di notifica Motivo dell'invio
TB in _ basso _fine VK
TB _ ENDTRACK WM _ KEYUP (l'utente ha rilasciato una chiave che ha inviato un codice di chiave virtuale pertinente)
TB _ LINEDOWN VK _ DESTRO o VK _ giù
_lineup TB VK _ SINISTRO o VK _
TB _ PGGIÙ VK _ AVANTI (l'utente ha fatto clic sul canale sotto o a destra del dispositivo di scorrimento)
TB _ PAGEUP VK _ PRIMA (l'utente ha fatto clic sul canale sopra o a sinistra del dispositivo di scorrimento)
TB _ THUMBPOSITION WM _ LBUTTONUP dopo un _ codice di notifica TB THUMBTRACK
TB _ THUMBTRACK Spostamento del dispositivo di scorrimento (l'utente ha trascinato il dispositivo di scorrimento)
TB _ superiore _casa VK

 

Elaborazione del messaggio TrackBar predefinita

In questa sezione viene descritta l'elaborazione dei messaggi della finestra eseguita da un TrackBar.

Message Elaborazione eseguita
_CAPTURECHANGED WM Termina il timer se ne è stato impostato uno durante l'elaborazione di WM _ LBUTTONDOWN e invia il _ codice di notifica THUMBPOSITION TB, se necessario. Invia sempre il codice di _ notifica ENDTRACK TB.
creazione di WM _ Esegue un'inizializzazione aggiuntiva, ad esempio impostando le dimensioni della riga, le dimensioni della pagina e la frequenza dei segni di graduazione sui valori predefiniti.
eliminazione di WM _ Libera risorse.
_Abilitazione WM Ridisegna la finestra TrackBar.
_ERASEBKGND WM Cancella lo sfondo della finestra, usando il colore di sfondo corrente per il controllo TrackBar.
_GETDLGCODE WM Restituisce il _ valore WANTARROWS di DLGC.
KeyDown di WM _ Elabora i tasti di direzione e invia i _ codici di notifica TB top, TB _ Bottom, TB _ PAGEUP, TB _ PGGIÙ, TB _ e TB _ LINEDOWN, a seconda dei casi.
KEYUP di WM _ Invia il _ codice di notifica ENDTRACK TB se il tasto è uno dei tasti di direzione.
_KILLFOCUS WM Ridisegna la finestra TrackBar.
_LBUTTONDOWN WM Imposta lo stato attivo e l'acquisizione del mouse sul TrackBar. Quando necessario, imposta un timer che determina la velocità di spostamento del dispositivo di scorrimento verso il cursore del mouse quando l'utente preme il pulsante del mouse nella finestra.
_LBUTTONUP WM Rilascia l'acquisizione del mouse e termina il timer se ne è stato impostato uno durante l'elaborazione di WM _ LBUTTONDOWN . Invia il codice di _ notifica THUMBPOSITION TB, se necessario. Invia sempre il codice di _ notifica ENDTRACK TB.
MOUSEMOVE di WM _ Spostare il dispositivo di scorrimento e inviare il _ codice di notifica THUMBTRACK TB quando si tiene traccia del mouse (vedere WM _ timer).
_disegno WM Disegna il TrackBar. Se il parametro wParam è diverso da NULL, il controllo presuppone che il valore sia un HDC e i colori che usano tale contesto di dispositivo.
_stato attivo WM Ridisegna la finestra TrackBar.
_dimensioni WM Imposta le dimensioni del TrackBar, rimuovendo il dispositivo di scorrimento se lo spazio disponibile non è sufficiente per visualizzarlo.
_timer WM Recupera la posizione del mouse e aggiorna la posizione del dispositivo di scorrimento. Viene ricevuto solo quando l'utente trascina il dispositivo di scorrimento.
_WININICHANGE WM Inizializza le dimensioni del dispositivo di scorrimento.

 

Descrizioni comandi di TrackBar

Un TrackBar creato con lo stile delle _ descrizioni comandi di TBS dispone di un controllo ToolTip predefinito. La descrizione comando rimane visibile e visualizza il valore corrente quando l'utente trascina il dispositivo di scorrimento usando il mouse.

È possibile assegnare un nuovo controllo ToolTip a un TrackBar inviando il messaggio TBM _ setooltips . Per recuperare l'handle a un controllo ToolTip assegnato, usare il messaggio TBM _ GetToolTips .