CBitmapButton (clase)

Crea controles de botón de comando etiquetados con imágenes de mapa de bits en lugar de texto.

Sintaxis

class CBitmapButton : public CButton

Miembros

Constructores públicos

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

Métodos públicos

Nombre Descripción
CBitmapButton::AutoLoad Asocia un botón de un cuadro de diálogo a un objeto de la clase CBitmapButton, carga los mapas de bits por nombre y ajusta el tamaño del botón para adaptarse al mapa de bits.
CBitmapButton::LoadBitmaps Inicializa el objeto cargando uno o varios recursos de mapa de bits con nombre desde el archivo de recursos de la aplicación y asociando los mapas de bits al objeto.
CBitmapButton::SizeToContent Ajusta el tamaño del botón para adaptarlo al mapa de bits.

Comentarios

Los objetos CBitmapButton contienen hasta cuatro mapas de bits, que contienen imágenes de los distintos estados que puede adoptar un botón: hacia arriba (o normal), hacia abajo (o seleccionado), centrado y deshabilitado. Solo se requiere el primer mapa de bits; los demás son opcionales.

Las imágenes de botón de mapa de bits incluyen el borde alrededor de la imagen, así como la propia imagen. Normalmente, el borde desempeña una parte en la visualización del estado del botón. Por ejemplo, el mapa de bits del estado centrado suele ser como el del estado arriba, pero con un rectángulo discontinuo insertado en el borde o una línea sólida gruesa en el borde. El mapa de bits del estado deshabilitado suele ser similar al del estado hacia arriba, pero tiene un contraste inferior (como una selección de menú atenuada).

Estos mapas de bits pueden tener cualquier tamaño, pero todos se tratan como si fueran del mismo tamaño que el mapa de bits del estado hacia arriba.

Varias aplicaciones exigen diferentes combinaciones de imágenes de mapa de bits:

Arriba Bajar Enfocado Deshabilitado Application
× Bitmap
× × Botón sin estilo de WS_TABSTOP
× × × × Botón de cuadro de diálogo con todos los estados
× × × Botón de cuadro de diálogo con estilo WS_TABSTOP

Al crear un control de botón de mapa de bits, establezca el estilo BS_OWNERDRAW para especificar que el botón es dibujado por el propietario. Esto hace que Windows envíe los mensajes WM_MEASUREITEM y WM_DRAWITEM para el botón; el marco controla estos mensajes y administra la apariencia del botón.

Para crear un control de botón de mapa de bits en el área cliente de una ventana:

  1. Cree entre una y cuatro imágenes de mapa de bits para el botón.

  2. Construya el objeto CBitmapButton.

  3. Llame a la función Create para crear el control de botón de Windows y asociarlo al objeto CBitmapButton.

  4. Llame a la función miembro LoadBitmaps para cargar los recursos de mapa de bits después de construir el botón de mapa de bits.

Para incluir un control de botón de mapa de bits en un cuadro de diálogo:

  1. Cree entre una y cuatro imágenes de mapa de bits para el botón.

  2. Cree una plantilla de cuadro de diálogo con un botón dibujado por el propietario colocado donde quiere que esté el botón de mapa de bits. El tamaño del botón de la plantilla no importa.

  3. Establezca el título del botón en un valor como "MYIMAGE" y defina un símbolo para el botón, como IDC_MYIMAGE.

  4. En el script de recursos de la aplicación, asigne a cada una de las imágenes creadas del botón un identificador construido anexando una de las letras "U", "D", "F" o "X" (para hacia arriba, hacia abajo, centrado y deshabilitado) a la cadena usada para el título del botón en el paso 3. Para el título del botón, por ejemplo, "MYIMAGE", los identificadores serían "MYIMAGEU", "MYIMAGED", "MYIMAGEF" y "MYIMAGEX". Debe especificar el identificador de los mapas de bits entre comillas dobles. De lo contrario, el editor de recursos asignará un valor entero al recurso y MFC producirá un error al cargar la imagen.

  5. En la clase de diálogo de la aplicación (derivada de CDialog), agregue un objeto miembro CBitmapButton.

  6. En la rutina OnInitDialog del objeto CDialog, llame a la función AutoLoad del objeto CBitmapButton, utilizando como parámetros el identificador de control del botón y el puntero this del objeto CDialog.

Si quiere controlar los mensajes de notificación de Windows, como BN_CLICKED, enviados por un control de botón de mapa de bits a su elemento principal (normalmente una clase derivada de CDialog), agregue al objeto derivado de CDialog una entrada de mapa de mensajes y una función miembro de controlador de mensajes para cada mensaje. Las notificaciones enviadas por un objeto CBitmapButton son las mismas que las enviadas por un objeto CButton.

La clase CToolBar adopta un enfoque diferente para los botones de mapa de bits.

Para más información sobre CBitmapButton, consulte Controles.

Jerarquía de herencia

CObject

CCmdTarget

CWnd

CButton

CBitmapButton

Requisitos

Encabezado: afxext.h

CBitmapButton::AutoLoad

Asocia un botón de un cuadro de diálogo a un objeto de la clase CBitmapButton, carga los mapas de bits por nombre y ajusta el tamaño del botón para adaptarse al mapa de bits.

BOOL AutoLoad(
    UINT nID,
    CWnd* pParent);

Parámetros

Nid
Identificador de control del botón.

pParent
Puntero al objeto que posee el botón.

Valor devuelto

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

Comentarios

Use la función AutoLoad para inicializar un botón dibujado por el propietario en un cuadro de diálogo como un botón de mapa de bits. Las instrucciones para usar esta función se encuentran en los comentarios de la clase CBitmapButton.

Ejemplo

CBitmapButton myButton;

// Initialize the owner-drawn button with the id IDC_MYBUTTON as a bitmap
// button. This code is used in the OnInitDialog handler of my dialog.
myButton.AutoLoad(IDC_MYBUTTON, this);

CBitmapButton::CBitmapButton

Crea un objeto CBitmapButton.

CBitmapButton();

Comentarios

Después de crear el objeto CBitmapButton de C++, llame a CButton::Create para crear el control de botón de Windows y asociarlo al objeto CBitmapButton.

Ejemplo

// Declare a bitmap button object on the stack.
CBitmapButton myButton;

// Declare a bitmap button object on the heap.
CBitmapButton *pmyButton = new CBitmapButton;

CBitmapButton::LoadBitmaps

Use esta función cuando quiera cargar imágenes de mapa de bits identificadas por sus nombres de recursos o números de identificador, o cuando no pueda usar la función AutoLoad porque, por ejemplo, vaya a crear un botón de mapa de bits que no forma parte de un cuadro de diálogo.

BOOL LoadBitmaps(
    LPCTSTR lpszBitmapResource,
    LPCTSTR lpszBitmapResourceSel = NULL,
    LPCTSTR lpszBitmapResourceFocus = NULL,
    LPCTSTR lpszBitmapResourceDisabled = NULL);

BOOL LoadBitmaps(
    UINT nIDBitmapResource,
    UINT nIDBitmapResourceSel = 0,
    UINT nIDBitmapResourceFocus = 0,
    UINT nIDBitmapResourceDisabled = 0);

Parámetros

lpszBitmapResource
Apunta a la cadena terminada en NULL que contiene el nombre del mapa de bits del estado normal o "hacia arriba" del botón de mapa de bits. Necesario.

lpszBitmapResourceSel
Apunta a la cadena terminada en NULL que contiene el nombre del mapa de bits del estado seleccionado o "hacia abajo" del botón de mapa de bits. Puede ser NULL.

lpszBitmapResourceFocus
Apunta a la cadena terminada en NULL que contiene el nombre del mapa de bits del estado centrado de un botón de mapa de bits. Puede ser NULL.

lpszBitmapResourceDisabled
Apunta a la cadena terminada en NULL que contiene el nombre del mapa de bits del estado deshabilitado de un botón de mapa de bits. Puede ser NULL.

nIDBitmapResource
Especifica el número de identificador de recurso del recurso de mapa de bits para el estado normal o "hacia arriba" del botón de mapa de bits. Necesario.

nIDBitmapResourceSel
Especifica el número de identificador de recurso del recurso de mapa de bits para el estado seleccionado o "hacia abajo" del botón de mapa de bits. Puede ser 0.

nIDBitmapResourceFocus
Especifica el número de identificador de recurso del recurso de mapa de bits para el estado centrado de un botón de mapa de bits. Puede ser 0.

nIDBitmapResourceDisabled
Especifica el número de identificador de recurso del recurso de mapa de bits para el estado deshabilitado de un botón de mapa de bits. Puede ser 0.

Valor devuelto

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

Ejemplo


// Create the bitmap button (must include the BS_OWNERDRAW style).
pmyButton->Create(NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
                  CRect(10, 10, 100, 100), pParentWnd, 1);

// Load the bitmaps for this button.
pmyButton->LoadBitmaps(IDB_UP, IDB_DOWN, IDB_FOCUS, IDB_DISABLE);

CBitmapButton::SizeToContent

Llame a esta función para cambiar el tamaño de un botón de mapa de bits al tamaño del mapa de bits.

void SizeToContent();

Ejemplo

CBitmapButton *pmyButton = new CBitmapButton();

// Create the bitmap button (must include the BS_OWNERDRAW style).
pmyButton->Create(NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
                  CRect(10, 10, 100, 100), pParentWnd, 1);

// Load the bitmaps for this button.
pmyButton->LoadBitmaps(IDB_UP, IDB_DOWN, IDB_FOCUS, IDB_DISABLE);

// Resize the button to be the size of the bitmaps.
pmyButton->SizeToContent();

Consulte también

MFC Sample CTRLTEST
CButton (clase)
Gráfico de jerarquías