Informazioni sui controlli Up-Down
Un controllo su-giù è una coppia di pulsanti freccia che l'utente può cliccare per incrementare o decrementare un valore, come una posizione di scorrimento o un numero visualizzato in un controllo associato, chiamato finestra collegata.
Per l'utente, un controllo up-down e la relativa finestra associata spesso sembrano un unico controllo. È possibile specificare che un controllo "up-down" si posizioni automaticamente accanto alla finestra associata e che imposti automaticamente la didascalia della finestra associata sulla posizione attuale. Ad esempio, è possibile usare un controllo di scorrimento con un controllo di modifica per richiedere all'utente l'input numerico. Nell'illustrazione seguente viene mostrato un controllo su-giù con un controllo di modifica come finestra associata, una combinazione nota anche come controllo rotante.
In questa sezione vengono illustrati gli argomenti seguenti.
- Up-Down Stili di controllo
- Posizione e Accelerazione
- Up-Down predefinita controlla l'elaborazione dei messaggi
Up-Down Stili di controllo
Usando gli stili di finestra, è possibile modificare le caratteristiche di un controllo up-down, ad esempio come si posiziona rispetto alla finestra corrispondente, se imposta il testo della finestra del compagno e se elabora i tasti FRECCIA SU e FRECCIA GIÙ.
Un controllo su e giù con lo stile UDS_ALIGNLEFT o UDS_ALIGNRIGHT si allinea con il bordo sinistro o destro della finestra associata. La larghezza della finestra del compagno viene ridotta per adattarsi alla larghezza del controllo su-giù.
Un controllo up-down con lo stile UDS_SETBUDDYINT imposta la didascalia della finestra associata quando la posizione corrente cambia. Il controllo inserisce un separatore di migliaia tra ogni tre cifre di una stringa decimale, a meno che non venga specificato lo stile UDS_NOTHOUSANDS. Se la finestra dell'amico è una casella di riepilogo, un controllo up-down imposta la selezione corrente anziché la relativa didascalia.
È possibile specificare lo stile UDS_ARROWKEYS per fornire un'interfaccia della tastiera per un controllo di scorrimento. Se si specifica questo stile, il controllo elabora i tasti freccia su e giù. Il controllo crea una sottoclasse anche per la finestra associata in modo che possa elaborare questi tasti quando la finestra associata è attiva.
Se si utilizza un controllo di scorrimento verso l'alto per lo scorrimento orizzontale, è possibile specificare lo stile di UDS_HORZ. Questo stile fa sì che le frecce del controllo su e giù puntino verso sinistra e destra anziché verso l'alto e il basso.
Per impostazione predefinita, la posizione corrente non cambia se l'utente tenta di incrementarlo o decrementarlo oltre il valore massimo o minimo. È possibile modificare questo comportamento usando lo stile UDS_WRAP, così la posizione si sposta verso l'estremo opposto. Ad esempio, l'incremento oltre il limite superiore effettua il ritorno della posizione al limite inferiore.
Posizione e accelerazione
Dopo aver creato un controllo di scorrimento, è possibile modificare la posizione corrente, la posizione minima e la posizione massima del controllo inviando messaggi. È anche possibile modificare la base di radix usata per visualizzare la posizione corrente nella finestra buddy e la frequenza con cui cambia la posizione corrente quando si fa clic sulla freccia su o giù.
Per recuperare la posizione attuale di un controllo su e giù, utilizzare il messaggio UDM_GETPOS. Per un controllo up-down con una finestra associata, la posizione corrente è il numero nel titolo della finestra associata. Poiché la didascalia potrebbe essere stata modificata(ad esempio, l'utente potrebbe aver modificato il testo di un controllo di modifica), il controllo di scorrimento recupera la didascalia corrente e ne aggiorna la posizione corrente di conseguenza.
La didascalia della finestra buddy può essere una stringa decimale o esadecimale, a seconda della base radix (ovvero base 10 o 16) del controllo di scorrimento. È possibile impostare la base di radix usando il messaggio di UDM_SETBASE e recuperare la base radix usando il messaggio UDM_GETBASE.
Il messaggio UDM_SETPOS imposta la posizione corrente di una finestra associata. Si noti che, a differenza di una barra di scorrimento, un controllo verso il basso cambia automaticamente la posizione corrente quando si fa clic sulle frecce su e giù. Un'applicazione, pertanto, non deve impostare la posizione corrente durante l'elaborazione del messaggio di WM_VSCROLL o WM_HSCROLL.
È possibile modificare le posizioni minima e massima di un controllo up-down utilizzando il messaggio UDM_SETRANGE. La posizione massima può essere inferiore al minimo e in tal caso facendo clic sul pulsante freccia su viene ridotta la posizione corrente. Per metterlo in un altro modo, in alto significa spostarsi verso la posizione massima. Per recuperare le posizioni minime e massime per un controllo up-down, usare il messaggio UDM_GETRANGE.
È possibile controllare la frequenza con cui cambia la posizione quando l'utente tiene premuto un pulsante freccia impostando l'accelerazione del controllo verso l'alto. L'accelerazione è definita da una matrice di strutture UDACCEL. Ogni struttura specifica un intervallo di tempo e il numero di unità in base alle quali incrementare o decrementare alla fine di tale intervallo. Per impostare l'accelerazione, usare il messaggio UDM_SETACCEL. Per recuperare informazioni sull'accelerazione, usare il messaggio di UDM_GETACCEL.
Il Up-Down predefinito controlla l'elaborazione dei messaggi
In questa sezione vengono descritti i messaggi di Windows standard elaborati da un controllo a incremento/decremento.
Messaggio | Elaborazione eseguita |
---|---|
WM_CREATE | Alloca e inizializza una struttura di dati privati e ne salva l'indirizzo come dati della finestra. |
WM_DESTROY | Libera i dati allocati durante l'elaborazione WM_CREATE. |
WM_ENABLE | Invalida la finestra. |
WM_KEYDOWN | Modifica la posizione corrente nel caso di un tasto FRECCIA SU o FRECCIA GIÙ. |
WM_KEYUP | Completa la modifica della posizione. |
WM_LBUTTONDOWN | Acquisisce il mouse. Se la finestra associata è un controllo di modifica o una casella di elenco, imposta lo stato attivo sulla finestra associata. Se il mouse si trova sopra il pulsante su o giù, inizia a modificare la posizione e imposta un timer. |
WM_LBUTTONUP | Completa la modifica della posizione e rilascia l'acquisizione del mouse se il controllo up-down ha acquisito il mouse. Se la finestra amico è un controllo di modifica, seleziona tutto il testo nel controllo di modifica. |
WM_PAINT | Disegna il controllo up-down. Se il parametro wParam è diverso da NULL, il controllo presuppone che il valore sia un HDC e disegna utilizzando quel contesto dispositivo. |
WM_TIMER | Modifica la posizione corrente se il mouse viene tenuto premuto su un pulsante e un intervallo sufficiente è trascorso. |