Acerca de los controles de Up-Down
Un control hacia arriba es un par de botones de flecha que el usuario puede hacer clic para incrementar o disminuir un valor, como una posición de desplazamiento o un número mostrado en un control complementario (denominado ventana de amigo).
Para el usuario, un control hacia arriba y su ventana de compañero a menudo se ven como un único control. Puede especificar que un control de arriba abajo se coloque automáticamente junto a su ventana de amigos y que establezca automáticamente la subtítulo de la ventana del compañero en su posición actual. Por ejemplo, puede usar un control de flecha abajo con un control de edición para solicitar al usuario una entrada numérica. En la ilustración siguiente se muestra un control de flecha arriba con un control de edición como su ventana de compañero, una combinación que a veces se conoce como control de número.
En esta sección se tratan los temas siguientes.
- Estilos de control de arriba abajo
- Posición y aceleración
- El procesamiento de mensajes predeterminado Up-Down controla el procesamiento de mensajes
estilos de control de Up-Down
Con estilos de ventana, puede manipular las características de un control de arriba abajo, como la forma en que se coloca en relación con su ventana de compañero, si establece el texto de su ventana de compañero y si procesa las teclas flecha arriba y flecha abajo.
Un control hacia abajo con el estilo UDS_ALIGNLEFT o UDS_ALIGNRIGHT se alinea con el borde izquierdo o derecho de su ventana de amigos. El ancho de la ventana de amigos se reduce para acomodar el ancho del control hacia arriba.
Un control hacia abajo con el estilo UDS_SETBUDDYINT establece el subtítulo de su ventana de compañero cada vez que cambia la posición actual. El control inserta un separador de miles entre cada tres dígitos de una cadena decimal a menos que se especifique el estilo UDS_NOTHOUSANDS . Si la ventana de amigos es un cuadro de lista, un control de arriba abajo establece su selección actual en lugar de su subtítulo.
Puede especificar el estilo de UDS_ARROWKEYS para proporcionar una interfaz de teclado para un control de flecha arriba. Si se especifica este estilo, el control procesa las teclas de flecha arriba y abajo. El control también subclase la ventana del compañero para que pueda procesar estas teclas cuando la ventana del compañero tenga el foco.
Si usa un control hacia arriba para desplazarse horizontalmente, puede especificar el estilo de UDS_HORZ . Este estilo hace que las flechas del control hacia arriba hacia abajo apunten a la izquierda y a la derecha en lugar de hacia arriba y hacia abajo.
De forma predeterminada, la posición actual no cambia si el usuario intenta incrementarlo o disminuirlo más allá del valor máximo o mínimo. Puede cambiar este comportamiento mediante el estilo UDS_WRAP , por lo que la posición "se ajusta" al extremo opuesto. Por ejemplo, si se incrementa más allá del límite superior, se vuelve a ajustar la posición al límite inferior.
Posición y aceleración
Después de crear un control hacia abajo, puede cambiar la posición actual del control, la posición mínima y la posición máxima enviando mensajes. También puede cambiar la base radix utilizada para mostrar la posición actual en la ventana del compañero y la velocidad a la que cambia la posición actual cuando se hace clic en la flecha arriba o abajo.
Para recuperar la posición actual de un control de arriba abajo, use el mensaje UDM_GETPOS . Para un control hacia arriba con una ventana de amigo, la posición actual es el número en el subtítulo de la ventana de amigo. Dado que el subtítulo puede haber cambiado (por ejemplo, el usuario puede haber editado el texto de un control de edición), el control de flechas recupera el subtítulo actual y actualiza su posición actual en consecuencia.
El subtítulo de la ventana de amigos puede ser una cadena decimal o hexadecimal, dependiendo de la base radix (es decir, base 10 o 16) del control de arriba abajo. Puede establecer la base de base radix mediante el mensaje UDM_SETBASE y recuperar la base radix mediante el UDM_GETBASE mensaje.
El mensaje UDM_SETPOS establece la posición actual de una ventana de amigo. Tenga en cuenta que, a diferencia de una barra de desplazamiento, un control hacia arriba cambia automáticamente su posición actual cuando se hace clic en las flechas arriba y abajo. Por lo tanto, una aplicación no necesita establecer la posición actual al procesar el WM_VSCROLL o WM_HSCROLL mensaje.
Puede cambiar las posiciones mínimas y máximas de un control hacia arriba mediante el UDM_SETRANGE mensaje. La posición máxima puede ser menor que la mínima y, en ese caso, al hacer clic en el botón de flecha arriba, se reduce la posición actual. Para ponerlo de otra manera, hacia arriba significa moverse hacia la posición máxima. Para recuperar las posiciones mínimas y máximas de un control de arriba abajo, use el mensaje UDM_GETRANGE .
Puedes controlar la velocidad a la que cambia la posición cuando el usuario mantiene presionado un botón de flecha configurando la aceleración del control hacia arriba. La aceleración se define mediante una matriz de estructuras UDACCEL . Cada estructura especifica un intervalo de tiempo y el número de unidades por las que se incrementará o disminuirá al final de ese intervalo. Para establecer la aceleración, use el mensaje UDM_SETACCEL . Para recuperar información de aceleración, use el mensaje UDM_GETACCEL .
El procesamiento de mensajes predeterminado Up-Down controla el procesamiento de mensajes
En esta sección se describen los mensajes estándar de Windows procesados por un control de flecha abajo.
Message | Procesamiento realizado |
---|---|
WM_CREATE | Asigna e inicializa una estructura de datos privada y guarda su dirección como datos de ventana. |
WM_DESTROY | Libera los datos asignados durante el procesamiento de WM_CREATE . |
WM_ENABLE | Invalida la ventana. |
WM_KEYDOWN | Cambia la posición actual en el caso de una tecla FLECHA ARRIBA o FLECHA ABAJO. |
WM_KEYUP | Completa el cambio de posición. |
WM_LBUTTONDOWN | Captura el mouse. Si la ventana del compañero es un control de edición o un cuadro de lista, establece el foco en la ventana del compañero. Si el mouse está sobre el botón arriba o abajo, comienza a cambiar la posición y establece un temporizador. |
WM_LBUTTONUP | Completa el cambio de posición y libera la captura del mouse si el control hacia arriba ha capturado el mouse. Si la ventana del compañero es un control de edición, selecciona todo el texto del control de edición. |
WM_PAINT | Pinta el control hacia arriba hacia abajo. Si el parámetro wParam no es NULL, el control asume que el valor es un HDC y pinta mediante ese contexto de dispositivo. |
WM_TIMER | Cambia la posición actual si el mouse se mantiene presionado sobre un botón y ha transcurrido un intervalo suficiente. |