CComboBox (clase) proporciona la funcionalidad de un cuadro combinado de Windows.
Un cuadro combinado se compone de un cuadro de lista combinado con un control estático o el control de edición. La parte de cuadro de lista del control puede mostrarse en todo momento o sólo puede caer hacia abajo cuando el usuario selecciona la flecha de lista desplegable junto al control.
El elemento seleccionado actualmente (si existe) en el cuadro de lista se muestra en la estática o editar el control. Además, si el cuadro combinado tiene el estilo de la lista desplegable, el usuario puede escribir el carácter inicial de uno de los elementos en la lista, y el cuadro de lista, si es visible, resaltará el elemento siguiente con ese carácter inicial.
E&n la siguiente tabla compara el cuadro combinado tres estilos.nbsp;
Estilo
¿Cuando aparece el cuadro de lista?
¿Control estático o editar?
Simple
Siempre
Editar
Lista desplegable
Cuando descendió
Editar
En la lista desplegable
Cuando descendió
Estática
Puede crear un objeto CComboBox o una plantilla de cuadro de diálogo o directamente en el código. En ambos casos, primero llamar al constructor CComboBox para construir el objeto CComboBox ; a continuación, llame a la función miembro Create para crear el control y adjuntarlo al objeto CComboBox.
Si desea gestionar los mensajes de notificación de Windows enviados por un cuadro combinado a su padre (normalmente una clase derivada de CDialog), añadir una función miembro de mapa de mensajes de entrada y controlador de mensaje a la clase principal para cada mensaje.
Cada entrada de mapa de mensajes tiene el siguiente formulario:
ON_Notificación()id,memberFxn)
donde id especifica el identificador de ventana secundaria del control de cuadro combinado enviar la notificación y la memberFxn es el nombre de la función de miembro de padres que ha escrito para manejar la notificación.
Prototipo de la función del padre es la siguiente:
afx_msgvoidmemberFxn();
No se puede predecir el orden en que se enviarán ciertas notificaciones. En particular, una notificación de CBN_SELCHANGE puede ocurrir antes o después de una notificación de CBN_CLOSEUP.
Posibles entradas de mapa de mensajes son los siguientes:
O&N_CBN_CLOSEUPnbsp; (Windows 3.1 y posteriores). Ha cerrado el cuadro de lista de un cuadro combinado. No se envía este mensaje de notificación para un cuadro combinado que tiene el estilo CBS_SIMPLE.
O&N_CBN_DBLCLKnbsp; El usuario hace doble clic en una cadena en el cuadro de lista de un cuadro combinado. Este mensaje de notificación sólo se envía para un cuadro combinado con el estilo CBS_SIMPLE . Para un cuadro combinado con el estilo CBS_DROPDOWN o CBS_DROPDOWNLIST , un doble clic no puede ocurrir porque un solo clic oculta el cuadro de lista.
O&N_CBN_DROPDOWNnbsp; El cuadro de lista de un cuadro combinado está a punto de caer (hacerse visibles). Este mensaje puede ocurrir solamente por un cuadro combinado con el estilo CBS_DROPDOWN o CBS_DROPDOWNLIST.
O&N_CBN_EDITCHANGEnbsp; El usuario ha tomado una acción que podría haber alterado el texto en la parte de control de la edición de un cuadro combinado. A diferencia de los mensajes CBN_EDITUPDATE , este mensaje se envía después de Windows actualiza la pantalla. No se envía si el cuadro combinado tiene el estilo CBS_DROPDOWNLIST.
O&N_CBN_EDITUPDATEnbsp; La parte de control de la edición de un cuadro combinado está a punto de mostrar texto alterado. Este mensaje se envía después de que el control ha formateado el texto pero antes de mostrar el texto. No se envía si el cuadro combinado tiene el estilo CBS_DROPDOWNLIST.
O&N_CBN_ERRSPACEnbsp; El cuadro combinado no puede asignar memoria suficiente para satisfacer una solicitud específica.
O&N_CBN_SELENDCANCELnbsp; (Windows 3.1 y posteriores). Indica que se debe cancelar la selección del usuario. El usuario hace clic en un elemento y, a continuación, hace clic en otra ventana o control para ocultar el cuadro de lista de un cuadro combinado. Este mensaje se envía antes el mensaje de notificación CBN_CLOSEUP para indicar que debe ignorarse la selección del usuario. Se envía el mensaje de notificación CBN_SELENDCANCEL o CBN_SELENDOK incluso si no se envía el mensaje de notificación de CBN_CLOSEUP (como en el caso de un cuadro combinado con el estilo CBS_SIMPLE ).
O&N_CBN_SELENDOKnbsp; El usuario selecciona un elemento y, a continuación, presione la tecla entrar o hace clic en la tecla de flecha abajo para ocultar el cuadro de lista de un cuadro combinado. Este mensaje se envía antes el mensaje CBN_CLOSEUP para indicar que la selección del usuario debe considerarse válida. Se envía el mensaje de notificación CBN_SELENDCANCEL o CBN_SELENDOK incluso si no se envía el mensaje de notificación de CBN_CLOSEUP (como en el caso de un cuadro combinado con el estilo CBS_SIMPLE ).
O&N_CBN_KILLFOCUSnbsp; El cuadro combinado es perder el foco de entrada.
O&N_CBN_SELCHANGEnbsp; La selección en el cuadro de lista de un cuadro combinado está a punto de ser cambiado por el usuario cambia la selección utilizando las teclas de flecha o haga clic en el cuadro de lista. Al procesar este mensaje, el texto en el control de edición del cuadro combinado se puede recuperar sólo a través de GetLBText o otra función similar. No se puede utilizar GetWindowText.
O&N_CBN_SETFOCUSnbsp; El cuadro combinado recibe el foco de entrada.
Si se crea un objeto CComboBox dentro de un cuadro de diálogo (a través de un recurso de cuadro de diálogo), el objeto CComboBox se destruye automáticamente cuando el usuario cierra el cuadro de diálogo.
Si incrusta un objeto CComboBox dentro de otro objeto de la ventana, no es necesario destruirla. Si se crea el objeto CComboBox en la pila, que es destruido automáticamente. Si se crea el objeto CComboBox en el montón mediante la Nueva función, se debe llamar Eliminar en el objeto para destruirlo cuando se destruye el cuadro combinado de Windows.