Características del cuadro combinado
En este documento se describen las características del cuadro combinado. Para obtener más información, vea los temas siguientes:
- Características especiales
- Notificaciones de cuadro combinado
- Comportamiento predeterminado del cuadro combinado
Características especiales
Hay mensajes y funciones de propósito especial que permiten a una aplicación mostrar una lista de directorios en un cuadro combinado, asociar datos con elementos de lista en un cuadro combinado y cambiar la interfaz de teclado de un cuadro combinado desplegable o cuadro de lista desplegable.
- Listas de directorios
- Datos asociados a elementos de lista
- Interfaz de usuario extendida
- Pancartas cue
Listas de directorios
Una aplicación puede agregar los nombres de archivos o subdirectorios a un cuadro combinado enviando el mensaje CB_DIR a él. El parámetro wParam de este mensaje especifica los atributos de los archivos que se van a agregar y el parámetro lParam es un puntero a la cadena de texto que define la especificación del archivo.
Puede usar la función DlgDirListComboBox para reemplazar el contenido de un cuadro combinado en un cuadro de diálogo. La función rellena el cuadro combinado con los nombres de unidades, directorios y archivos que coinciden con un conjunto de criterios especificado. La función DlgDirSelectComboBoxEx recupera la selección actual en un cuadro combinado inicializado por DlgDirListComboBox. Estas funciones permiten al usuario seleccionar una unidad, un directorio o un archivo de un cuadro combinado sin escribir la ubicación y el nombre del archivo.
Las funciones DlgDirListComboBox y DlgDirSelectComboBoxEx y el mensaje de CB_DIR son similares a las funciones DlgDirList y DlgDirSelectEx y el mensaje de LB_DIR usado con cuadros de lista.
Datos asociados a elementos de lista
Una aplicación puede asociar datos a los elementos de lista de un cuadro combinado. El mensaje CB_SETITEMDATA asocia un valor DWORD a un elemento de lista y el CB_GETITEMDATA recupera el valor asociado a un elemento de lista.
En el ejemplo de Creación de un cuadro combinado dibujado por el propietario se usan datos de elementos para asociar una constante a cada elemento de un cuadro de lista desplegable. Este valor único identifica cada elemento independientemente de su posición ordenada.
Otras aplicaciones pueden usar datos de elementos para asociar un identificador o puntero a un elemento de lista. Si es así, una aplicación puede procesar un mensaje de WM_DELETEITEM para eliminar o liberar el objeto especificado cuando se elimina el elemento de lista.
Interfaz de usuario extendida
Los cuadros combinados desplegables y los cuadros de lista desplegables admiten una interfaz de teclado alternativa denominada interfaz de usuario extendida. De forma predeterminada, la tecla F4 abre o cierra la lista y la flecha abajo cambia la selección actual. Sin embargo, en un cuadro combinado con la interfaz de usuario extendida, la tecla F4 está deshabilitada y al presionar la tecla FLECHA ABAJO se abre la lista desplegable. Además, la rueda del mouse, que normalmente se desplaza por los elementos de la lista, no tiene ninguna función cuando se establece la interfaz de usuario extendida.
Para seleccionar la interfaz de usuario de un cuadro combinado, una aplicación puede enviar el mensaje CB_SETEXTENDEDUI al cuadro combinado. Un valor TRUE para el parámetro wParam habilita la interfaz de usuario extendida; Un valor FALSE establece la interfaz de usuario predeterminada. Para determinar si un cuadro combinado usa la interfaz de usuario extendida, una aplicación puede enviar el mensaje CB_GETEXTENDEDUI al cuadro combinado.
Pancartas cue
Los banners de cue son una nueva característica de los controles de edición y los cuadros combinados. El propósito de un banner de indicación es proporcionar una sugerencia al usuario sobre el propósito de un control de edición o un cuadro combinado. En la captura de pantalla siguiente se muestra un control de edición con el texto de indicación "Buscar".
El texto de un banner de indicación se muestra cuando un control de edición no tiene texto o un cuadro combinado no tiene ninguna selección. Cuando el usuario escribe texto en el control de edición o realiza una selección en un cuadro combinado, el banner de indicación desaparece. De forma predeterminada, el banner de indicación también desaparece cuando el control de edición o el cuadro combinado recibe el foco.
Notificaciones de cuadro combinado
Los mensajes de los cuadros combinados se envían como códigos de notificación en forma de mensajes WM_COMMAND . El código de notificación se almacena en la palabra alta del parámetro wParam y una aplicación puede procesar los siguientes códigos de notificación de cuadro combinado.
Código de notificación | Descripción |
---|---|
CBN_CLOSEUP | Indica que la lista de un cuadro combinado desplegable o un cuadro de lista desplegable está a punto de cerrarse. |
CBN_DBLCLK | Indica que el usuario ha realizado doble clic en un elemento de lista en un cuadro combinado simple. |
CBN_DROPDOWN | Indica que la lista de un cuadro combinado desplegable o un cuadro de lista desplegable está a punto de abrirse. |
CBN_EDITCHANGE | Indica que el usuario ha cambiado el texto del control de edición de un cuadro combinado simple o desplegable. Este código de notificación se envía después de mostrar el texto modificado. |
CBN_EDITUPDATE | Indica que el usuario ha cambiado el texto del control de edición de un cuadro combinado simple o desplegable. Este código de notificación se envía antes de que se muestre el texto modificado. |
CBN_ERRSPACE | Indica que el cuadro combinado no puede asignar memoria suficiente para llevar a cabo una solicitud, como agregar un elemento de lista. |
CBN_KILLFOCUS | Indica que el cuadro combinado está a punto de perder el foco de entrada. |
CBN_SELCHANGE | Indica que la selección actual ha cambiado. |
CBN_SELENDCANCEL | Indica que la selección realizada en la lista desplegable, mientras se ha quitado, debe omitirse. |
CBN_SELENDOK | Indica que se debe aceptar la selección realizada en la lista desplegable, mientras se ha quitado. |
CBN_SETFOCUS | Indica que el cuadro combinado ha recibido el foco de entrada. |
Comportamiento predeterminado del cuadro combinado
En esta tabla siguiente se describen los mensajes que controla específicamente el procedimiento predefinido de ventana de clase COMBOBOX.
Message | Descripción |
---|---|
CB_ADDSTRING | Envía un mensaje LB_ADDSTRING a la ventana de lista para agregar un elemento de lista. |
CB_DELETESTRING | Envía un mensaje LB_DELETESTRING a la ventana de lista para eliminar un elemento de lista. |
CB_DIR | Agrega los nombres de archivo que coinciden con los atributos y la ruta de acceso especificados a la lista. |
CB_FINDSTRING | Envía un mensaje LB_FINDSTRING a la ventana de lista. Este mensaje devuelve el índice del primer elemento de lista que comienza con el texto especificado. |
CB_FINDSTRINGEXACT | Envía un mensaje LB_FINDSTRING a la ventana de lista. Este mensaje devuelve el índice del primer elemento de lista que coincide exactamente con el texto especificado. |
CB_GETCOUNT | Envía un mensaje LB_GETCOUNT a la ventana de lista. Devuelve el número de elementos de lista. |
CB_GETCURSEL | Envía un mensaje LB_GETCURSEL a la ventana de lista. Devuelve el índice del elemento seleccionado actualmente, si existe. |
CB_GETDROPPEDCONTROLRECT | Rellena la estructura de rectángulo especificada con las coordenadas de pantalla de una lista desplegable. |
CB_GETDROPPEDSTATE | Devuelve TRUE si se abre una lista desplegable; de lo contrario, devuelve FALSE. |
CB_GETDROPPEDWIDTH | Devuelve el ancho mínimo permitido, en píxeles, de la lista desplegable. |
CB_GETEDITSEL | Envía un mensaje EM_GETSEL al control de edición y devuelve la posición inicial y final de la selección actual. En los cuadros de lista desplegable, el procedimiento de ventana devuelve CB_ERR. |
CB_GETEXTENDEDUI | Devuelve TRUE si el cuadro combinado es un cuadro combinado desplegable o un cuadro de lista desplegable y se establece la marca extender la interfaz de usuario; de lo contrario, devuelve FALSE. |
CB_GETHORIZONTALEXTENT | Envía un mensaje LB_GETHORIZONTALEXTENT a la ventana de lista. Devuelve el ancho desplazable, en píxeles, de la lista desplegable. |
CB_GETITEMDATA | Envía un mensaje LB_GETITEMDATA a la ventana de lista. Devuelve el valor asociado al elemento de lista especificado. |
CB_GETITEMHEIGHT | Envía un mensaje LB_GETITEMHEIGHT a la ventana de lista. Devuelve el alto, en píxeles, del elemento de lista dibujado por el propietario especificado. |
CB_GETLBTEXT | Envía un mensaje LB_GETTEXT a la ventana de lista. Copia el texto de lista especificado en el búfer especificado. |
CB_GETLBTEXTLEN | Envía un mensaje LB_GETTEXTLEN a la ventana de lista. Devuelve la longitud, en TCHAR, del texto de lista especificado. |
CB_GETLOCALE | Envía un mensaje LB_GETLOCALE a la ventana de lista. Devuelve la configuración regional actual de la lista. |
CB_GETMINVISIBLE | Obtiene el número mínimo de elementos visibles en la lista desplegable de un cuadro combinado. |
CB_GETTOPINDEX | Envía un mensaje LB_GETTOPINDEX a la ventana de lista. Devuelve el índice del primer elemento visible en la lista desplegable. |
CB_INITSTORAGE | Envía un mensaje LB_INITSTORAGE a la ventana de lista. Inicializa espacio para el número especificado de elementos y el número especificado de bytes para las cadenas de elementos. |
CB_INSERTSTRING | Envía un mensaje LB_INSERTSTRING a la ventana de lista. Inserta un elemento de lista en la posición especificada. |
CB_LIMITTEXT | Envía un mensaje EM_LIMITTEXT al control de edición. Establece el número máximo de caracteres que un usuario puede escribir en el control de edición. En los cuadros de lista desplegable, el procedimiento de ventana devuelve CB_ERR. |
CB_RESETCONTENT | Envía un mensaje LB_RESETCONTENT a la ventana de lista y quita el contenido de la lista. |
CB_SELECTSTRING | Envía un mensaje LB_SELECTSTRING a la ventana de lista. Selecciona el primer elemento de lista, si existe, que comienza con los caracteres del texto especificado. |
CB_SETCURSEL | Envía un mensaje LB_SETCURSEL a la ventana de lista y establece la selección actual. |
CB_SETDROPPEDWIDTH | Establece el ancho mínimo permitido, en píxeles, de la lista desplegable. |
CB_SETEDITSEL | Envía un mensaje EM_SETSEL al control de edición. Selecciona el intervalo de texto especificado. En los cuadros de lista desplegable, el procedimiento de ventana devuelve CB_ERR. |
CB_SETEXTENDEDUI | Establece o borra la marca de interfaz de usuario extendida. Esta marca cambia las claves que abren y cierran la lista en un cuadro combinado desplegable o un cuadro de lista desplegable. Si el cuadro combinado es un cuadro combinado simple, el procedimiento de ventana devuelve CB_ERR. |
CB_SETHORIZONTALEXTENT | Envía un mensaje LB_SETHORIZONTALEXTENT a la ventana de lista. Establece el ancho desplazable, en píxeles, de la lista desplegable. |
CB_SETITEMDATA | Envía un mensaje LB_SETITEMDATA a la ventana de lista. Asocia el valor especificado a un elemento de lista. |
CB_SETITEMHEIGHT | Envía un mensaje LB_SETITEMHEIGHT a la ventana de lista. Establece el alto del elemento de lista dibujado por el propietario especificado o del campo de selección. |
CB_SETLOCALE | Envía un mensaje LB_SETLOCALE a la ventana de lista y establece la configuración regional actual de la lista. La configuración regional afecta a cómo se ordena la lista si tiene el estilo CBS_SORT y las cadenas se agregan mediante CB_ADDSTRING. |
CB_SETMINVISIBLE | Establece el número mínimo de elementos visibles en la lista desplegable de un cuadro combinado. |
CB_SETTOPINDEX | Envía un mensaje LB_SETTOPINDEX a la ventana de lista. Desplaza la lista desplegable para que el elemento especificado esté en la parte superior del intervalo visible. |
CB_SHOWDROPDOWN | Muestra u oculta la lista desplegable. Este mensaje no tiene ningún efecto en los cuadros combinados simples. |
WM_CHAR | Procesa la entrada de caracteres. En los cuadros de lista desplegable, este mensaje se pasa a la ventana de lista, que mueve la selección al primer elemento que comienza con el carácter especificado. En cuadros combinados simples y desplegables, este mensaje se pasa al control de edición. |
WM_CLEAR | Elimina la selección de edición. En cuadros combinados simples y desplegables, el control de edición procesa este mensaje. En los cuadros de lista desplegable, el procedimiento de ventana devuelve CB_ERR. |
WM_COMMAND | Procesa los mensajes de notificación desde el control de edición y la ventana de lista y envía los códigos de notificación de cuadro combinado correspondientes a la ventana primaria. |
Para las notificaciones de control de edición, el procedimiento de ventana puede actualizar la selección actual de la ventana de lista, el índice de intercalación y el índice superior. Para los mensajes de notificación de lista, el procedimiento de ventana puede actualizar el contenido del campo de selección. | |
WM_COMPAREITEM | Pasa el mensaje a la ventana primaria, lo que permite a la aplicación especificar la posición de ordenación relativa de dos elementos de lista dibujados por el propietario. La ventana del cuadro combinado recibe este mensaje de la ventana de lista. |
WM_COPY | Copia la selección de edición en el Portapapeles. En cuadros combinados simples y desplegables, el control de edición procesa este mensaje. En los cuadros de lista desplegable, el procedimiento de ventana devuelve CB_ERR. |
WM_CREATE | Inicializa el cuadro combinado. |
WM_CUT | Elimina la selección de edición y la coloca en el Portapapeles. En cuadros combinados simples y desplegables, el control de edición procesa este mensaje. En los cuadros de lista desplegable, el procedimiento de ventana devuelve CB_ERR. |
WM_DELETEITEM | Pasa el mensaje a la ventana primaria, notificando a la aplicación que se ha eliminado un elemento de lista. La ventana del cuadro combinado recibe este mensaje de la ventana de lista. |
WM_DRAWITEM | Pasa el mensaje a la ventana primaria, lo que permite a la aplicación pintar el elemento de lista especificado. La ventana del cuadro combinado recibe este mensaje de la ventana de lista. El procedimiento de ventana también puede originar este mensaje para que la aplicación pinte el campo de selección de un cuadro de lista desplegable. |
WM_ENABLE | Establece el estado para habilitar o prohibir la entrada del mouse y del teclado. |
WM_ERASEBKGND | Devuelve 1, lo que indica que se borra el fondo. |
WM_GETDLGCODE | Devuelve una combinación de los valores de DLG_WANTCHARS y DLGC_WANTARROWS. |
WM_GETFONT | Devuelve el identificador a la fuente actual con la que el cuadro combinado dibujará su texto. |
WM_GETTEXT | Copia el contenido del campo de selección en el búfer especificado. En cuadros combinados simples y desplegables, el control de edición procesa este mensaje. |
WM_GETTEXTLENGTH | Devuelve la longitud, en caracteres, del texto del campo de selección. En cuadros combinados simples y desplegables, el control de edición procesa este mensaje. |
WM_KEYDOWN | Procesa la entrada del teclado que no es de caracteres. En los cuadros de lista desplegable, este mensaje se envía a la ventana de lista, que puede mostrar u ocultarse, o cambiar su índice de selección o intercalación actual. En cuadros combinados simples y desplegables, este mensaje se pasa al control de edición. El control de edición pasa determinadas teclas a la ventana de lista, como las teclas FLECHA ARRIBA y ABAJO y la tecla F4. |
WM_KILLFOCUS | Oculta el resaltado en el campo de selección y cierra la lista desplegable, si es necesario. Si la ventana que recibe el foco de entrada forma parte del cuadro combinado (por ejemplo, el control de edición), este mensaje se omite. |
WM_LBUTTONDBLCLK | Igual que WM_LBUTTONDOWN. |
WM_LBUTTONDOWN | Establece el foco en el cuadro combinado y, para los cuadros combinados desplegables y las listas desplegables, puede abrir o cerrar la lista. Si abre la lista, el procedimiento de ventana captura el mouse para habilitar la selección arrastrando y soltando el botón del mouse. |
WM_LBUTTONUP | Libera la captura del mouse si el mouse abrió la lista. |
WM_MEASUREITEM | Envía el mensaje a la ventana primaria, lo que permite a la aplicación modificar el contenido de la estructura MEASUREITEMSTRUCT especificada. La ventana del cuadro combinado recibe este mensaje de la ventana de lista. |
WM_MOUSEMOVE | Envía el mensaje a la ventana de lista si el mouse ha abierto la lista y el botón del mouse sigue estando inactivo. Esto permite a un usuario seleccionar un elemento arrastrando el puntero del mouse a un elemento de lista y soltando el botón. |
WM_NCCREATE | Asigna una estructura de datos interna utilizada por el procedimiento de ventana del cuadro combinado. |
WM_NCDESTROY | Libera los recursos asignados en respuesta al mensaje de WM_NCCREATE . |
WM_PAINT | Pinta la región no válida del cuadro combinado. Si wParam no es NULL, se supone que es un identificador de contexto de dispositivo (DC) pasado desde una función de subclase. El procedimiento de ventana usa el controlador de dominio especificado en lugar de llamar a BeginPaint y EndPaint. |
WM_PASTE | Reemplaza la selección de edición por el contenido del Portapapeles. En cuadros combinados simples y desplegables, el control de edición procesa este mensaje. En los cuadros de lista desplegable, el procedimiento de ventana devuelve CB_ERR. |
WM_SETFOCUS | Establece el foco en el control de edición o, en los cuadros de lista desplegable, invierte el campo de selección y activa el símbolo de intercalación en la ventana de lista. |
WM_SETFONT | Guarda el identificador de fuente especificado en una estructura interna, ajusta las dimensiones del campo de selección y la lista, e invalida la ventana del cuadro combinado. El texto del campo de selección y la lista se muestra en la fuente guardada. |
WM_SETREDRAW | Establece o borra la marca de volver a dibujar. Si la marca de volver a dibujar está desactivada, el cuadro combinado no se vuelve a dibujar hasta que se vuelva a establecer la marca. |
WM_SETTEXT | Establece el contenido del control de edición. En cuadros combinados simples y desplegables, el control de edición procesa este mensaje. En los cuadros de lista desplegable, el procedimiento de ventana devuelve CB_ERR. |
WM_SIZE | Cambia el tamaño de las ventanas secundarias, si es necesario. |
WM_SYSKEYDOWN | Abre o cierra la lista desplegable en función de la tecla de dirección que el usuario haya presionado. |
Todos los demás mensajes se pasan a la función DefWindowProc para el procesamiento predeterminado.