Compartir vía


Clase CComboBoxEx

Extiende el control de cuadro combinado proporcionando compatibilidad con las listas de imágenes.

Sintaxis

class CComboBoxEx : public CComboBox

Miembros

Constructores públicos

Nombre Descripción
CComboBoxEx::CComboBoxEx Construye un objeto CComboBoxEx.

Métodos públicos

Nombre Descripción
CComboBoxEx::Create Crea el cuadro de combinado y lo asocia al objeto CComboBoxEx.
CComboBoxEx::CreateEx Crea un cuadro combinado con los estilos extendidos de Windows especificados y lo asocia a un objeto ComboBoxEx.
CComboBoxEx::DeleteItem Quita un elemento de un control ComboBoxEx.
CComboBoxEx::GetComboBoxCtrl Recupera un puntero al control de cuadro combinado secundario.
CComboBoxEx::GetEditCtrl Recupera el identificador de la parte del control de edición de un control ComboBoxEx.
CComboBoxEx::GetExtendedStyle Recupera los estilos extendidos que están en uso en relación con un control ComboBoxEx.
CComboBoxEx::GetImageList Recupera un puntero a la lista de imágenes asignada a un control ComboBoxEx.
CComboBoxEx::GetItem Recupera la información de elemento de un elemento ComboBoxEx determinado.
CComboBoxEx::HasEditChanged Determina si el usuario ha cambiado el contenido del control de edición ComboBoxEx mediante escritura.
CComboBoxEx::InsertItem Inserta un nuevo elemento en un control ComboBoxEx.
CComboBoxEx::SetExtendedStyle Establece estilos extendidos dentro de un control ComboBoxEx.
CComboBoxEx::SetImageList Establece una lista de imágenes de un control ComboBoxEx.
CComboBoxEx::SetItem Establece los atributos de un elemento de un control ComboBoxEx.
CComboBoxEx::SetWindowTheme Establece el estilo visual del control de cuadro combinado extendido.

Comentarios

Si usa CComboBoxEx para crear controles de cuadro combinado, ya no es necesario que implemente su propio código de dibujo de imágenes. En su lugar, use CComboBoxEx para acceder a las imágenes de una lista de imágenes.

Compatibilidad con listas de imágenes

En un cuadro combinado estándar, el propietario del cuadro combinado es responsable de dibujar una imagen creando el cuadro combinado como un control de dibujo de propietario. Cuando se usa CComboBoxEx, no es necesario establecer los estilos de dibujo CBS_OWNERDRAWFIXED y CBS_HASSTRINGS, porque ya están implícitos. De lo contrario, deberá escribir código para realizar operaciones de dibujo. Un control CComboBoxEx admite hasta tres imágenes por elemento: una para el estado seleccionado, otra para el estado no seleccionado y otra como imagen de superposición.

Estilos

CComboBoxEx admite los estilos CBS_SIMPLE, CBS_DROPDOWN, CBS_DROPDOWNLIST y WS_CHILD. Este control omite todos los demás estilos pasados al crear la ventana. Una vez creada la ventana, se pueden proporcionar otros estilos de cuadro combinado llamando a la función miembro de CComboBoxEx SetExtendedStyle. Con estos estilos se puede hacer lo siguiente:

  • Configurar las búsquedas de cadenas en la lista de forma que distingan mayúsculas de minúsculas.

  • Crear un control de cuadro combinado que use los caracteres de barra diagonal ('/'), barra diagonal inversa ('\') y punto ('.') como delimitadores de palabras. Esto permite a los usuarios saltar de palabra en palabra usando el método abreviado de teclado CTRL+FLECHA.

  • Configurar el control de cuadro combinado de forma que muestre o no una imagen. Si no se muestra ninguna imagen, el cuadro combinado puede quitar la sangría de texto que da cabida a una imagen.

  • Crear un control de cuadro combinado estrecho, incluido ajustar su tamaño para recortar el cuadro combinado más amplio que contiene.

Estas marcas de estilo se describen más adelante en Uso de CComboBoxEx.

Atributos de elemento devolución de llamada y retención de elemento

La información de elementos, como los índices de los elementos y las imágenes, los valores de sangría y las cadenas de texto, se almacena en la estructura WIN32 COMBOBOXEXITEM, como se describe en Windows SDK. La estructura también contiene miembros que corresponden a marcas de devolución de llamada.

Para obtener una explicación detallada de los conceptos, vea Uso de CComboBoxEx.

Jerarquía de herencia

CObject

CCmdTarget

CWnd

CComboBox

CComboBoxEx

Requisitos

Encabezado: afxcmn.h

CComboBoxEx::CComboBoxEx

Llame a esta función miembro para crear un objeto CComboBoxEx.

CComboBoxEx();

CComboBoxEx::Create

Crea el cuadro de combinado y lo asocia al objeto CComboBoxEx.

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parámetros

dwStyle
Especifica la combinación de estilos de cuadro combinado aplicada al cuadro combinado. Vea Comentarios para obtener más información sobre los estilos.

rect
Referencia a un objeto CRect o a una estructura RECT, que es la posición y el tamaño del cuadro combinado.

pParentWnd
Puntero a un objeto CWnd que es la ventana primaria del cuadro combinado (normalmente, CDialog). No debe ser NULL.

Nid
Especifica el identificador de control del cuadro combinado.

Valor devuelto

El valor devuelto será distinto de cero si el objeto se crea correctamente; en caso contrario, será 0.

Comentarios

Un objeto CComboBoxEx se crea en dos pasos:

  1. Llame a CComboBoxEx para construir un objeto CComboBoxEx.

  2. Llame a esta función miembro, que crea el cuadro combinado extendido de Windows y lo asocia al objeto CComboBoxEx.

Al llamar a Create, MFC inicializa los controles comunes.

Al crear el cuadro combinado, puede especificar cualquiera o todos los siguientes estilos de cuadro combinado:

  • CBS_SIMPLE

  • CBS_DROPDOWN

  • CBS_DROPDOWNLIST

  • CBS_AUTOHSCROLL

  • WS_CHILD

Se omiten todos los demás estilos pasados al crear la ventana. El control ComboBoxEx también admite estilos extendidos que proporcionan características adicionales. Estos estilos se describen en Estilos extendidos del control ComboBoxEx, en Windows SDK. Configure estos estilos llamando a SetExtendedStyle.

Si quiere usar estilos extendidos de Windows con el control, llame a CreateEx en lugar de a Create.

CComboBoxEx::CreateEx

Llame a esta función para crear un control de cuadro combinado extendido (una ventana secundaria) y asociarlo al objeto CComboBoxEx.

virtual BOOL CreateEx(
    DWORD dwExStyle,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parámetros

dwExStyle
El valor de este parámetro se usa para especificar el estilo extendido del control que se va a crear. Para ver una lista de estilos extendidos de Windows, consulte el parámetro dwExStyle para CreateWindowEx en Windows SDK.

dwStyle
Estilo del control de cuadro combinado. Vea Create para obtener una lista de estilos extendidos.

rect
Referencia a una estructura RECT que describe el tamaño y la posición de la ventana que se va a crear, en coordenadas de cliente de pParentWnd.

pParentWnd
Un puntero a la ventana que constituye el elemento primario del control.

Nid
El identificador de ventana secundaria del control.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Usa la función CreateEx, en lugar de Create para aplicar estilos extendidos de Windows. Estos se especifican en el prefacio de estilo extendido de Windows WS_EX_.

CreateEx crea el control con los estilos de extendidos de Windows especificados por dwExStyle. Los estilos extendidos específicos de un control de cuadro combinado extendido se deben configurar mediante SetExtendedStyle. Por ejemplo, use CreateEx para configurar estilos como WS_EX_CONTEXTHELP, pero use SetExtendedStyle para hacer lo propio con estilos como CBES_EX_CASESENSITIVE. Para obtener más información, vea los estilos descritos en el tema Estilos extendidos del control ComboBoxEx en Windows SDK.

CComboBoxEx::DeleteItem

Quita un elemento de un control ComboBoxEx.

int DeleteItem(int iIndex);

Parámetros

iIndex
Índice de base cero del elemento que se va a quitar.

Valor devuelto

Número de elementos que quedan en el control. Si iIndex no es válido, la función devuelve CB_ERR.

Comentarios

Esta función miembro implementa la funcionalidad del mensaje CBEM_DELETEITEM, como se describe en Windows SDK. Al llamar a DeleteItem, se enviará a la ventana primaria un mensaje WM_NOTIFY con la notificación CBEN_DELETEITEM.

CComboBoxEx::GetComboBoxCtrl

Llame a esta función miembro para obtener un puntero a un control de cuadro combinado dentro de un objeto CComboBoxEx.

CComboBox* GetComboBoxCtrl();

Valor devuelto

Puntero a un objeto CComboBox .

Comentarios

El control CComboBoxEx consta de una ventana primaria, que encapsula un objeto CComboBox.

El objeto CComboBox al que apunta el valor devuelto es un objeto temporal y se destruye durante el siguiente tiempo de procesamiento inactivo.

CComboBoxEx::GetEditCtrl

Llame a esta función miembro para obtener un puntero al control de edición de un cuadro combinado.

CEdit* GetEditCtrl();

Valor devuelto

Puntero a un objeto CEdit.

Comentarios

Un control CComboBoxEx usa un cuadro de edición cuando se crea con el estilo CBS_DROPDOWN.

El objeto CEdit al que apunta el valor devuelto es un objeto temporal y se destruye durante el siguiente tiempo de procesamiento inactivo.

CComboBoxEx::GetExtendedStyle

Llame a esta función miembro para obtener los estilos extendidos usados con un control CComboBoxEx.

DWORD GetExtendedStyle() const;

Valor devuelto

Valor DWORD que contiene los estilos extendidos que se usan con el control de cuadro combinado.

Comentarios

Vea Estilos extendidos del control ComboBoxEx en Windows SDK para obtener más información sobre estos estilos.

CComboBoxEx::GetImageList

Llame a esta función miembro para obtener un puntero a la lista de imágenes usada por un control CComboBoxEx.

CImageList* GetImageList() const;

Valor devuelto

Puntero a un objeto CImageList. Si se produce un error, esta función miembro devuelve NULL.

Comentarios

El objeto CImageList al que apunta el valor devuelto es un objeto temporal y se destruye durante el siguiente tiempo de procesamiento inactivo.

CComboBoxEx::GetItem

Recupera la información de elemento de un elemento ComboBoxEx determinado.

BOOL GetItem(COMBOBOXEXITEM* pCBItem);

Parámetros

pCBItem
Puntero a una estructura COMBOBOXEXITEM que recibirá la información del elemento.

Valor devuelto

Distinto de cero si la operación es correcta; de lo contrario, 0.

Comentarios

Esta función miembro implementa la funcionalidad del mensaje CBEM_GETITEM, como se describe en Windows SDK.

CComboBoxEx::HasEditChanged

Determina si el usuario ha cambiado el contenido del control de edición ComboBoxEx mediante escritura.

BOOL HasEditChanged();

Valor devuelto

Distinto de cero si el usuario ha escrito en el cuadro de edición del control; de lo contrario, 0.

Comentarios

Esta función miembro implementa la funcionalidad del mensaje CBEM_HASEDITCHANGED, como se describe en Windows SDK.

CComboBoxEx::InsertItem

Inserta un nuevo elemento en un control ComboBoxEx.

int InsertItem(const COMBOBOXEXITEM* pCBItem);

Parámetros

pCBItem
Puntero a una estructura COMBOBOXEXITEM que recibirá la información del elemento. Esta estructura contiene valores de marca de devolución de llamada del elemento.

Valor devuelto

Índice en el que se insertó el nuevo elemento si es correcto; de lo contrario, -1.

Comentarios

Al llamar a InsertItem, a WM_NOTIFY, se enviará a la ventana primaria un mensaje con la notificación CBEN_INSERTITEM.

CComboBoxEx::SetExtendedStyle

Llame a esta función miembro para configurar los estilos extendidos usados en un control extendido de cuadro combinado.

DWORD SetExtendedStyle(
    DWORD dwExMask,
    DWORD dwExStyles);

Parámetros

dwExMask
Valor DWORD que indica qué estilos de dwExStyles se verán afectados. Solo se cambiarán los estilos extendidos de dwExMask. Todos los demás estilos se mantendrán tal y como están. Si este parámetro es cero, todos los estilos de dwExStyles se verán afectados.

dwExStyles
Valor DWORD que contiene los estilos extendidos del control de cuadro combinado se van a configurar para el control.

Valor devuelto

Valor DWORD que contiene los estilos extendidos usados anteriormente para el control.

Comentarios

Vea Estilos extendidos del control ComboBoxEx en Windows SDK para obtener más información sobre estos estilos.

Para crear un control extendido de cuadro combinado con estilos de ventana extendidos, use CreateEx.

CComboBoxEx::SetImageList

Establece una lista de imágenes de un control ComboBoxEx.

CImageList* SetImageList(CImageList* pImageList);

Parámetros

pImageList
Puntero a un objeto CImageList que contiene las imágenes que se van a usar con el control CComboBoxEx.

Valor devuelto

Puntero a un objeto CImageList que contiene las imágenes usadas anteriormente por el control CComboBoxEx. NULL si no se estableció ninguna lista de imágenes previamente.

Comentarios

Esta función miembro implementa la funcionalidad del mensaje CBEM_SETIMAGELIST, como se describe en Windows SDK. Si cambia el alto del control de edición predeterminado, llame a la función de Win32 SetWindowPos para cambiar el tamaño del control después de llamar a SetImageList o, de lo contrario, no se mostrará correctamente.

El objeto CImageList al que apunta el valor devuelto es un objeto temporal y se destruye durante el siguiente tiempo de procesamiento inactivo.

CComboBoxEx::SetItem

Establece los atributos de un elemento de un control ComboBoxEx.

BOOL SetItem(const COMBOBOXEXITEM* pCBItem);

Parámetros

pCBItem
Puntero a una estructura COMBOBOXEXITEM que recibirá la información del elemento.

Valor devuelto

Distinto de cero si la operación es correcta; de lo contrario, 0.

Comentarios

Esta función miembro implementa la funcionalidad del mensaje CBEM_SETITEM, como se describe en Windows SDK.

CComboBoxEx::SetWindowTheme

Establece el estilo visual del control de cuadro combinado extendido.

HRESULT SetWindowTheme(LPCWSTR pszSubAppName);

Parámetros

pszSubAppName
Puntero con una cadena Unicode que contiene el estilo visual del cuadro combinado que se va a establecer.

Valor devuelto

En esta función, no se usa el valor devuelto.

Comentarios

Esta función miembro se usa para emular la funcionalidad del mensaje CBEM_SETWINDOWTHEME, tal y como se describe en Windows SDK.

Consulte también

Ejemplo MFCIE de MFC
CComboBox (clase)
Gráfico de jerarquías
CComboBox (clase)