CButton (clase)
Proporciona la funcionalidad de los controles de botón de Windows.
Sintaxis
class CButton : public CWnd
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CButton::CButton | Construye un objeto CButton . |
Métodos públicos
Nombre | Descripción |
---|---|
CButton::Create | Crea el control de botón de Windows y lo asocia al objeto CButton . |
CButton::DrawItem | Se invalida para dibujar un objeto CButton dibujado por el propietario. |
CButton::GetBitmap | Recupera el identificador del mapa de bits establecido previamente con SetBitmap. |
CButton::GetButtonStyle | Recupera información sobre el estilo de control de botón. |
CButton::GetCheck | Recupera el estado de comprobación de un control de botón. |
CButton::GetCursor | Recupera el identificador de la imagen del cursor establecida previamente con SetCursor. |
CButton::GetIcon | Recupera el identificador del icono establecido previamente con SetIcon. |
CButton::GetIdealSize | Recupera el tamaño ideal del control de botón. |
CButton::GetImageList | Recupera la lista de imágenes del control de botón. |
CButton::GetNote | Recupera el componente de nota del control de vínculo de comando actual. |
CButton::GetNoteLength | Recupera la longitud del texto de la nota para el control de vínculo de comando actual. |
CButton::GetSplitGlyph | Recupera el glifo asociado al control de botón de expansión actual. |
CButton::GetSplitImageList | Recupera la lista de imágenes del control de botón de expansión actual. |
CButton::GetSplitInfo | Recupera información que define el control de botón de expansión actual. |
CButton::GetSplitSize | Recupera el rectángulo delimitador del componente desplegable del control de botón de expansión actual. |
CButton::GetSplitStyle | Recupera los estilos del botón de expansión que definen el control de botón de expansión actual. |
CButton::GetState | Recupera el estado de comprobación, el estado de resaltado y el estado de foco de un control de botón. |
CButton::GetTextMargin | Recupera el margen del texto del control de botón. |
CButton::SetBitmap | Especifica un mapa de bits que se va a mostrar en el botón. |
CButton::SetButtonStyle | Cambia el estilo de un botón. |
CButton::SetCheck | Establece el estado de comprobación de un control de botón. |
CButton::SetCursor | Especifica una imagen de cursor que se va a mostrar en el botón. |
CButton::SetDropDownState | Establece el estado desplegable del control de botón de expansión actual. |
CButton::SetIcon | Especifica un icono que se va a mostrar en el botón. |
CButton::SetImageList | Establece la lista de imágenes del control de botón. |
CButton::SetNote | Establece la nota en el control de vínculo de comando actual. |
CButton::SetSplitGlyph | Asocia un glifo especificado al control de botón de expansión actual. |
CButton::SetSplitImageList | Asocia una lista de imágenes con el control de botón de expansión actual. |
CButton::SetSplitInfo | Especifica información que define el control de botón de expansión actual. |
CButton::SetSplitSize | Establece el rectángulo delimitador del componente desplegable del control de botón de expansión actual. |
CButton::SetSplitStyle | Establece el estilo del control de botón de expansión actual. |
CButton::SetState | Establece el estado de resaltado de un control de botón. |
CButton::SetTextMargin | Establece el margen del texto del control de botón. |
Comentarios
Un control de botón es una ventana secundaria pequeña y rectangular que se puede activar y desactivar mediante un clic. Los botones se pueden usar solos o en grupos y pueden etiquetarse o aparecer sin texto. Normalmente, un botón cambia de apariencia cuando el usuario hace clic en él.
Los botones típicos son las casillas, los botones de radio y los botones de inserción. Un objeto CButton
puede convertirse en cualquiera de ellos, según el estilo del botón especificado en su inicialización por la función miembro Crear.
Además, la clase CBitmapButton derivada de CButton
admite la creación de controles de botón etiquetados con imágenes de mapa de bits en lugar de texto. Un elemento CBitmapButton
puede tener mapas de bits independientes para los estados activado, desactivado, enfocado y deshabilitado de un botón.
Puede crear un control de botón a partir de una plantilla de cuadro de diálogo o directamente en el código. En primer lugar, llame al constructor CButton
para que construya el objeto CButton
y, después, llame a la función miembro Create
para que cree el control de botón de Windows y lo asocie al objeto CButton
.
La construcción puede ser un proceso de un solo paso en una clase derivada de CButton
. Escriba un constructor para la clase derivada y llame a Create
desde dentro del constructor.
Si quiere controlar los mensajes de notificación de Windows enviados por un control de botón a su elemento primario (normalmente una clase derivada de CDialog), agregue una entrada de mapa de mensajes y una función miembro del controlador de mensajes a la clase primaria para cada mensaje.
Cada entrada de asignación de mensajes tiene la siguiente forma:
ON_Notification ( id, memberFxn )
donde id. especifica el id. de ventana secundaria del control que envía la notificación y FxnMiembro es el nombre de la función miembro primaria que ha escrito para controlar la notificación.
El prototipo de función principal es el siguiente:
afx_msg void memberFxn();
Las posibles entradas de mapa de mensajes son las siguientes:
Entrada de mapa | Se envía al elemento primario cuando... |
---|---|
ON_BN_CLICKED | El usuario hace clic en un botón. |
ON_BN_DOUBLECLICKED | El usuario hace doble clic en un botón. |
Si crea un objeto CButton
en un recurso de cuadro de diálogo, el objeto CButton
se destruye automáticamente cuando el usuario cierra el cuadro de diálogo.
Si crea un objeto CButton
dentro de una ventana, es posible que tenga que destruirlo. Si crea el objeto CButton
en el montón mediante la función new
, debe llamar a delete
en el objeto para destruirlo cuando el usuario cierre el control de botón de Windows. Si crea el objeto CButton
en la pila o se inserta en el objeto de cuadro de diálogo primario, se destruye automáticamente.
Jerarquía de herencia
CButton
Requisitos
Encabezado: afxwin.h
CButton::CButton
Construye un objeto CButton
.
CButton();
Ejemplo
// Declare a button object.
CButton myButton;
CButton::Create
Crea el control de botón de Windows y lo asocia al objeto CButton
.
virtual BOOL Create(
LPCTSTR lpszCaption,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parámetros
lpszCaption
[in] Especifica el texto del control de botón.
dwStyle
Especifica el estilo del control de botón. Aplique cualquier combinación de estilos de botón al botón.
rect
Especifica el tamaño y la posición del control de botón. Puede ser un objeto CRect
o una estructura RECT
.
pParentWnd
Especifica la ventana primaria del control de botón, que suele ser un elemento CDialog
. No debe ser NULL.
Nid
Especifica el id. del control de botón.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
El objeto CButton
se construye en dos pasos. En primer lugar, llame al constructor y, a continuación, llame a Create
, que crea el control de botón de Windows y lo asocia al objeto CButton
.
Si se especifica el estilo WS_VISIBLE, Windows envía al control de botón todos los mensajes necesarios para activar y mostrar el botón.
Aplique los siguientes estilos de ventana a un control de botón:
WS_CHILD siempre
WS_VISIBLE Normalmente
WS_DISABLED Rarely
WS_GROUP Para agrupar controles
WS_TABSTOP para incluir el botón en el orden de tabulación
Ejemplo
CButton myButton1, myButton2, myButton3, myButton4;
// Create a push button.
myButton1.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CRect(10, 10, 100, 30), pParentWnd, 1);
// Create a radio button.
myButton2.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
CRect(10, 40, 100, 70), pParentWnd, 2);
// Create an auto 3-state button.
myButton3.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
CRect(10, 70, 100, 100), pParentWnd, 3);
// Create an auto check box.
myButton4.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX,
CRect(10, 100, 100, 130), pParentWnd, 4);
CButton::DrawItem
El marco lo llama cuando ha cambiado un aspecto visual de un botón dibujado por el propietario.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Parámetros
lpDrawItemStruct
Puntero largo a una estructura DRAWITEMSTRUCT. La estructura contiene información sobre el elemento que se va a dibujar y el tipo de dibujo necesario.
Comentarios
Un botón dibujado por el propietario tiene establecido el estilo BS_OWNERDRAW. Invalide esta función miembro para implementar el dibujo de un objeto CButton
dibujado por el propietario. La aplicación debe restaurar todos los objetos de Interfaz de dispositivo gráfico (GDI) seleccionados para el contexto de presentación proporcionado en lpDrawItemStruct antes de que finalice esta función miembro.
Consulte también los valores de estilo BS_.
Ejemplo
// NOTE: CMyButton is a class derived from CButton. The CMyButton
// object was created as follows:
//
// CMyButton myButton;
// myButton.Create(_T("My button"),
// WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_OWNERDRAW,
// CRect(10,10,100,30), pParentWnd, 1);
//
// This example implements the DrawItem method for a CButton-derived
// class that draws the button's text using the color red.
void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
UINT uStyle = DFCS_BUTTONPUSH;
// This code only works with buttons.
ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON);
// If drawing selected, add the pushed style to DrawFrameControl.
if (lpDrawItemStruct->itemState & ODS_SELECTED)
uStyle |= DFCS_PUSHED;
// Draw the button frame.
::DrawFrameControl(lpDrawItemStruct->hDC, &lpDrawItemStruct->rcItem,
DFC_BUTTON, uStyle);
// Get the button's text.
CString strText;
GetWindowText(strText);
// Draw the button text using the text color red.
COLORREF crOldColor = ::SetTextColor(lpDrawItemStruct->hDC, RGB(255, 0, 0));
::DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(),
&lpDrawItemStruct->rcItem, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
::SetTextColor(lpDrawItemStruct->hDC, crOldColor);
}
CButton::GetBitmap
Llame a esta función miembro para obtener el identificador de un mapa de bits, establecido previamente con SetBitmap, que está asociado a un botón.
HBITMAP GetBitmap() const;
Valor devuelto
Identificador de un mapa de bits. NULL si no se ha especificado previamente ningún mapa de bits.
Ejemplo
CButton myBitmapButton;
// Create a bitmap button.
myBitmapButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_BITMAP,
CRect(10, 10, 60, 50), pParentWnd, 1);
// If no bitmap is defined for the button, define the bitmap to the
// system close bitmap.
if (myBitmapButton.GetBitmap() == NULL)
myBitmapButton.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CLOSE)));
CButton::GetButtonStyle
Recupera información sobre el estilo de control de botón.
UINT GetButtonStyle() const;
Valor devuelto
Devuelve los estilos de botón de este objeto CButton
. Esta función devuelve solo los valores de estilo BS_, ninguno de los demás estilos de ventana.
Ejemplo
CButton myRadioButton;
// Create a radio button.
myRadioButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
CRect(10, 10, 100, 30), pParentWnd, 1);
// Change the button style to use one of the "auto" styles; for
// push button, change to def push button.
UINT uStyle = myRadioButton.GetButtonStyle();
if (uStyle == BS_PUSHBUTTON)
uStyle = BS_DEFPUSHBUTTON;
else if (uStyle == BS_RADIOBUTTON)
uStyle = BS_AUTORADIOBUTTON;
else if (uStyle == BS_CHECKBOX)
uStyle = BS_AUTOCHECKBOX;
else if (uStyle == BS_3STATE)
uStyle = BS_AUTO3STATE;
// Change the button style to the one wanted.
myRadioButton.SetButtonStyle(uStyle);
CButton::GetCheck
Recupera el estado de comprobación de un botón de radio o casilla.
int GetCheck() const;
Valor devuelto
El valor devuelto de un control de botón creado con el estilo BS_AUTOCHECKBOX, BS_AUTORADIOBUTTON, BS_AUTO3STATE, BS_CHECKBOX, BS_RADIOBUTTON o BS_3STATE es uno de los siguientes valores:
Valor | Significado |
---|---|
BST_UNCHECKED | El estado del botón es desactivado. |
BST_CHECKED | El estado del botón es activado. |
BST_INDETERMINATE | El estado del botón es indeterminado (solo se aplica si el botón tiene el estilo BS_3STATE o BS_AUTO3STATE). |
Si el botón tiene cualquier otro estilo, el valor devuelto es BST_UNCHECKED.
Ejemplo
CButton myA3Button;
// Create an auto 3-state button.
myA3Button.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
CRect(10, 10, 100, 30), pParentWnd, 1);
// Set the check state to the next state
// (i.e. BST_UNCHECKED changes to BST_CHECKED
// BST_CHECKED changes to BST_INDETERMINATE
// BST_INDETERMINATE changes to BST_UNCHECKED).
myA3Button.SetCheck(((myA3Button.GetCheck() + 1) % 3));
CButton::GetCursor
Llame a esta función miembro para obtener el identificador de un cursor, establecido previamente con SetCursor, que está asociado a un botón.
HCURSOR GetCursor();
Valor devuelto
Identificador de una imagen de cursor. NULL si no se ha especificado previamente ningún cursor.
Ejemplo
CButton myIconButton;
// Create an icon button.
myIconButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
CRect(10, 10, 60, 50), pParentWnd, 1);
// If no image is defined for the button, define the image to the
// system arrow and question mark cursor.
if (myIconButton.GetCursor() == NULL)
myIconButton.SetCursor(::LoadCursor(NULL, IDC_HELP));
CButton::GetIcon
Llame a esta función miembro para obtener el identificador de un icono, establecido previamente con SetIcon, que está asociado a un botón.
HICON GetIcon() const;
Valor devuelto
Identificador de un icono. NULL si no se ha especificado previamente ningún icono.
Ejemplo
CButton myIconButton2;
// Create an icon button.
myIconButton2.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
CRect(10, 10, 60, 50), pParentWnd, 1);
// If no icon is defined for the button, define the icon to the
// system error icon.
if (myIconButton2.GetIcon() == NULL)
myIconButton2.SetIcon(::LoadIcon(NULL, IDI_ERROR));
CButton::GetIdealSize
Recupera el tamaño ideal del control de botón.
BOOL GetIdealSize(SIZE* psize);
Parámetros
psize
Puntero al tamaño actual del botón.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
Esta función miembro emula la funcionalidad del mensaje BCM_GETIDEALSIZE, como se describe en la sección Botones de Windows SDK.
CButton::GetImageList
Llame a este método para obtener la lista de imágenes del control de botón.
BOOL GetImageList(PBUTTON_IMAGELIST pbuttonImagelist);
Parámetros
pbuttonImagelist
Puntero a la lista de imágenes del objeto CButton
.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
Esta función miembro emula la funcionalidad del mensaje BCM_GETIMAGELIST, como se describe en la sección Botones de Windows SDK.
CButton::GetNote
Recupera el texto de la nota asociada al control de vínculo de comando actual.
CString GetNote() const;
BOOL GetNote(
LPTSTR lpszNote,
UINT* cchNote) const;
Parámetros
lpszNote
[out] Puntero a un búfer, que el autor de la llamada es responsable de asignar y desasignar. Si el valor devuelto es TRUE, el búfer contiene el texto de la nota asociada al control de vínculo de comando actual; de lo contrario, el búfer no cambia.
cchNote
[in, out] Puntero a una variable de entero sin signo. Cuando se llama a este método, la variable contiene el tamaño del búfer especificado por el parámetro lpszNote. Cuando vuelve este método, si el valor devuelto es TRUE, la variable contiene el tamaño de la nota asociada al control de vínculo de comando actual. Si el valor devuelto es FALSE, la variable contiene el tamaño del búfer necesario para contener la nota.
Valor devuelto
En la primera sobrecarga, un objeto CString que contiene el texto de la nota asociada al control de vínculo de comando actual.
O bien
En la segunda sobrecarga, TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Use este método solo con controles cuyo estilo de botón sea BS_COMMANDLINK o BS_DEFCOMMANDLINK.
Este método envía el mensaje BCM_GETNOTE, que se describe en Windows SDK.
CButton::GetNoteLength
Recupera la longitud del texto de la nota para el control de vínculo de comando actual.
UINT GetNoteLength() const;
Valor devuelto
Longitud del texto de la nota, en caracteres Unicode de 16 bits, para el control de vínculo de comando actual.
Comentarios
Use este método solo con controles cuyo estilo de botón sea BS_COMMANDLINK o BS_DEFCOMMANDLINK.
Este método envía el mensaje BCM_GETNOTELENGTH, que se describe en Windows SDK.
CButton::GetSplitGlyph
Recupera el glifo asociado al control de botón de expansión actual.
TCHAR GetSplitGlyph() const;
Valor devuelto
Carácter de glifo asociado al control de botón de expansión actual.
Comentarios
Un glifo es la representación física de un carácter en una fuente determinada. Por ejemplo, un control de botón de expansión puede estar decorado con el glifo del carácter de marca de comprobación Unicode (U+2713).
Use este método solo con controles cuyo estilo de botón sea BS_SPLITBUTTON o BS_DEFSPLITBUTTON.
Este método inicializa el miembro mask
de una estructura BUTTON_SPLITINFO con la marca BCSIF_GLYPH y, a continuación, envía esa estructura en el mensaje BCM_GETSPLITINFO que se describe en Windows SDK. Cuando se devuelve la función de mensaje, este método recupera el glifo del miembro himlGlyph
de la estructura.
CButton::GetSplitImageList
Recupera la lista de imágenes del control de botón de expansión actual.
CImageList* GetSplitImageList() const;
Valor devuelto
Puntero a un objeto CImageList.
Comentarios
Use este método solo con controles cuyo estilo de botón sea BS_SPLITBUTTON o BS_DEFSPLITBUTTON.
Este método inicializa el miembro mask
de una estructura BUTTON_SPLITINFO con la marca BCSIF_IMAGE y, a continuación, envía esa estructura en el mensaje BCM_GETSPLITINFO que se describe en Windows SDK. Cuando se devuelve la función de mensaje, este método recupera la lista de imágenes del miembro himlGlyph
de la estructura.
CButton::GetSplitInfo
Recupera parámetros que determinan cómo Windows dibuja el control de botón de expansión actual.
BOOL GetSplitInfo(PBUTTON_SPLITINFO pInfo) const;
Parámetros
pInfo
[out] Puntero a una estructura BUTTON_SPLITINFO que recibe información sobre el control de botón de expansión actual. El autor de la llamada es responsable de asignar la estructura .
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Use este método solo con controles cuyo estilo de botón sea BS_SPLITBUTTON o BS_DEFSPLITBUTTON.
Este método envía el mensaje BCM_GETSPLITINFO, que se describe en Windows SDK.
CButton::GetSplitSize
Recupera el rectángulo delimitador del componente desplegable del control de botón de expansión actual.
BOOL GetSplitSize(LPSIZE pSize) const;
Parámetros
pSize
[out] Puntero a una estructura SIZE que recibe la descripción de un rectángulo.
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Use este método solo con controles cuyo estilo de botón sea BS_SPLITBUTTON o BS_DEFSPLITBUTTON.
Cuando se expande el control de botón de expansión, puede mostrar un componente desplegable, como un control de lista o un control de paginación. Este método recupera el rectángulo delimitador que contiene el componente desplegable.
Este método inicializa el miembro mask
de una estructura BUTTON_SPLITINFO con la marca BCSIF_SIZE y, a continuación, envía esa estructura en el mensaje BCM_GETSPLITINFO que se describe en Windows SDK. Cuando se devuelve la función de mensaje, este método recupera el rectángulo delimitador del miembro size
de la estructura.
CButton::GetSplitStyle
Recupera los estilos del botón de expansión que definen el control de botón de expansión actual.
UINT GetSplitStyle() const;
Valor devuelto
Combinación bit a bit de estilos de botón de expansión. Para más información, vea el miembro uSplitStyle
de la estructura BUTTON_SPLITINFO.
Comentarios
Use este método solo con controles cuyo estilo de botón sea BS_SPLITBUTTON o BS_DEFSPLITBUTTON.
Los estilos de botón de expansión especifican la alineación, la relación de aspecto y el formato gráfico con el que Windows dibuja un icono de botón de expansión.
Este método inicializa el miembro mask
de una estructura BUTTON_SPLITINFO con la marca BCSIF_STYLE y, a continuación, envía esa estructura en el mensaje BCM_GETSPLITINFO que se describe en Windows SDK. Cuando se devuelve la función de mensaje, este método recupera los estilos de botón de expansión del miembro uSplitStyle
de la estructura.
CButton::GetState
Recupera el estado de un control de botón.
UINT GetState() const;
Valor devuelto
Campo de bits que contiene la combinación de valores que indican el estado actual de un control de botón. En la tabla siguiente, se enumeran los valores posibles.
Estado del botón | Valor | Descripción |
---|---|---|
BST_UNCHECKED | 0x0000 | Estado inicial. |
BST_CHECKED | 0x0001 | El control de botón está activado. |
BST_INDETERMINATE | 0x0002 | El estado es indeterminado (solo es posible cuando el control de botón tiene tres estados). |
BST_PUSHED | 0x0004 | El control de botón está presionado. |
BST_FOCUS | 0x0008 | El control de botón tiene el foco. |
Comentarios
Un control de botón con el estilo de botón BS_3STATE o BS_AUTO3STATE crea una casilla que tiene un tercer estado denominado estado indeterminado. El estado indeterminado indica que la casilla no está activada ni desactivada.
Ejemplo
CButton myPushButton;
// Create a push button.
myPushButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CRect(10, 10, 100, 30), pParentWnd, 1);
// Invert the highlight state of the button.
myPushButton.SetState(!(myPushButton.GetState() & 0x0004));
CButton::GetTextMargin
Llame a este método para obtener el margen del texto del objeto CButton
.
BOOL GetTextMargin(RECT* pmargin);
Parámetros
pmargin
Puntero al margen de texto del CButton
objeto.
Valor devuelto
Devuelve el margen del texto. Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
Esta función miembro emula la funcionalidad del mensaje BCM_GETTEXTMARGIN, como se describe en la sección Botones de Windows SDK.
CButton::SetBitmap
Llame a esta función miembro para asociar un nuevo mapa de bits al botón.
HBITMAP SetBitmap(HBITMAP hBitmap);
Parámetros
hBitmap
Identificador de un mapa de bits.
Valor devuelto
Identificador de un mapa de bits asociado previamente al botón.
Comentarios
El mapa de bits se colocará automáticamente en la cara del botón, centrado de forma predeterminada. Si el mapa de bits es demasiado grande para el botón, se recortará a ambos lados. Puede elegir otras opciones de alineación, incluidas las siguientes:
BS_TOP
BS_LEFT
BS_RIGHT
BS_CENTER
BS_BOTTOM
BS_VCENTER
A diferencia de CBitmapButton, que usa cuatro mapas de bits por botón, SetBitmap
usa solo un mapa de bits por botón. Cuando se presiona el botón, el mapa de bits parece desplazarse hacia abajo y hacia la derecha.
Usted es responsable de liberar el mapa de bits cuando haya terminado.
Ejemplo
CButton myBitmapButton;
// Create a bitmap button.
myBitmapButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_BITMAP,
CRect(10, 10, 60, 50), pParentWnd, 1);
// If no bitmap is defined for the button, define the bitmap to the
// system close bitmap.
if (myBitmapButton.GetBitmap() == NULL)
myBitmapButton.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CLOSE)));
CButton::SetButtonStyle
Cambia el estilo de un botón.
void SetButtonStyle(
UINT nStyle,
BOOL bRedraw = TRUE);
Parámetros
nStyle
Especifica el estilo del botón.
bRedraw
Especifica si el botón se va a volver a dibujar. Un valor distinto de cero vuelve a dibujar el botón. Un valor 0 no vuelve a dibujar el botón. El botón se vuelve a dibujar de forma predeterminada.
Comentarios
Use la función miembro GetButtonStyle
para recuperar el estilo del botón. La palabra de orden inferior del estilo de botón completo es el estilo específico del botón.
Ejemplo
CButton myRadioButton;
// Create a radio button.
myRadioButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON,
CRect(10, 10, 100, 30), pParentWnd, 1);
// Change the button style to use one of the "auto" styles; for
// push button, change to def push button.
UINT uStyle = myRadioButton.GetButtonStyle();
if (uStyle == BS_PUSHBUTTON)
uStyle = BS_DEFPUSHBUTTON;
else if (uStyle == BS_RADIOBUTTON)
uStyle = BS_AUTORADIOBUTTON;
else if (uStyle == BS_CHECKBOX)
uStyle = BS_AUTOCHECKBOX;
else if (uStyle == BS_3STATE)
uStyle = BS_AUTO3STATE;
// Change the button style to the one wanted.
myRadioButton.SetButtonStyle(uStyle);
CButton::SetCheck
Establece o restablece el estado de comprobación de un botón de radio o casilla.
void SetCheck(int nCheck);
Parámetros
nCheck
Especifica el estado de comprobación. Este parámetro puede ser uno de los siguientes:
Valor | Significado |
---|---|
BST_UNCHECKED | Establece el estado del botón en desactivado. |
BST_CHECKED | Establece el estado del botón en activado. |
BST_INDETERMINATE | Establece el estado del botón en indeterminado. Este valor solo se puede usar si el botón tiene el estilo BS_3STATE o BS_AUTO3STATE. |
Comentarios
Esta función miembro no tiene ningún efecto en un botón de inserción.
Ejemplo
CButton myA3Button;
// Create an auto 3-state button.
myA3Button.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,
CRect(10, 10, 100, 30), pParentWnd, 1);
// Set the check state to the next state
// (i.e. BST_UNCHECKED changes to BST_CHECKED
// BST_CHECKED changes to BST_INDETERMINATE
// BST_INDETERMINATE changes to BST_UNCHECKED).
myA3Button.SetCheck(((myA3Button.GetCheck() + 1) % 3));
CButton::SetCursor
Llame a esta función miembro para asociar un nuevo cursor al botón.
HCURSOR SetCursor(HCURSOR hCursor);
Parámetros
hCursor
Identificador de un cursor.
Valor devuelto
Identificador de un cursor asociado previamente al botón.
Comentarios
El cursor se colocará automáticamente en la cara del botón, centrado de forma predeterminada. Si el cursor es demasiado grande para el botón, se recortará a ambos lados. Puede elegir otras opciones de alineación, incluidas las siguientes:
BS_TOP
BS_LEFT
BS_RIGHT
BS_CENTER
BS_BOTTOM
BS_VCENTER
A diferencia de CBitmapButton, que usa cuatro mapas de bits por botón, SetCursor
usa solo un cursor por botón. Cuando se presiona el botón, el cursor parece desplazarse hacia abajo y hacia la derecha.
Ejemplo
CButton myIconButton;
// Create an icon button.
myIconButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
CRect(10, 10, 60, 50), pParentWnd, 1);
// If no image is defined for the button, define the image to the
// system arrow and question mark cursor.
if (myIconButton.GetCursor() == NULL)
myIconButton.SetCursor(::LoadCursor(NULL, IDC_HELP));
CButton::SetDropDownState
Establece el estado desplegable del control de botón de expansión actual.
BOOL SetDropDownState(BOOL fDropDown);
Parámetros
fDropDown
[in] TRUE para establecer el estado BST_DROPDOWNPUSHED; de lo contrario, FALSE.
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Un control de botón de expansión tiene un estilo de BS_SPLITBUTTON o BS_DEFSPLITBUTTON, y consta de un botón y una flecha desplegable a su derecha. Para más información, consulte Estilos de botón. Normalmente, el estado de la lista desplegable se establece cuando el usuario hace clic en la flecha desplegable. Use este método para establecer mediante programación el estado desplegable del control. La flecha desplegable se dibuja sombreada para indicar el estado.
Este método envía el mensaje BCM_SETDROPDOWNSTATE, que se describe en Windows SDK.
Ejemplo
En el primer ejemplo de código se define la variable m_splitButton
, que se usa para acceder mediante programación al control de botón de expansión. Esta variable se usa en el ejemplo siguiente.
public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;
En el ejemplo de código siguiente se establece el estado del control de botón de expansión para indicar que se inserta la flecha desplegable.
/* Set the state of the split button control to indicate that
the drop-down arrow is pushed. The arrow is drawn shaded to
indicate the state.
*/
m_splitButton.SetDropDownState(TRUE);
CButton::SetElevationRequired
Establece el estado del control de botón actual en elevation required
, que es necesario para que el control muestre un icono de seguridad elevada.
BOOL SetElevationRequired(BOOL fElevationRequired);
Parámetros
fElevationRequired
[in] TRUE para establecer el estado elevation required
; en caso contrario, FALSE.
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Si un control de vínculo de comando o botón requiere permisos de seguridad elevados para realizar una acción, establezca el control en estado elevation required
. Posteriormente, Windows muestra el icono de escudo de Control de cuentas de usuario (UAC) en el control. Para más información, vea User Account Control (Control de cuentas de usuario).
Este método envía el mensaje BCM_SETSHIELD, que se describe en Windows SDK.
CButton::SetIcon
Llame a esta función miembro para asociar un nuevo icono al botón.
HICON SetIcon(HICON hIcon);
Parámetros
hIcon
Identificador de un icono.
Valor devuelto
Identificador de un icono asociado previamente al botón.
Comentarios
El icono se colocará automáticamente en la cara del botón, centrado de forma predeterminada. Si el icono es demasiado grande para el botón, se recortará a ambos lados. Puede elegir otras opciones de alineación, incluidas las siguientes:
BS_TOP
BS_LEFT
BS_RIGHT
BS_CENTER
BS_BOTTOM
BS_VCENTER
A diferencia de CBitmapButton, que usa cuatro mapas de bits por botón, SetIcon
usa solo un icono por botón. Cuando se presiona el botón, el icono parece desplazarse hacia abajo y hacia la derecha.
Ejemplo
CButton myIconButton2;
// Create an icon button.
myIconButton2.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_ICON,
CRect(10, 10, 60, 50), pParentWnd, 1);
// If no icon is defined for the button, define the icon to the
// system error icon.
if (myIconButton2.GetIcon() == NULL)
myIconButton2.SetIcon(::LoadIcon(NULL, IDI_ERROR));
CButton::SetImageList
Llame a este método para establecer la lista de imágenes del objeto CButton
.
BOOL SetImageList(PBUTTON_IMAGELIST pbuttonImagelist);
Parámetros
pbuttonImagelist
Puntero a la nueva lista de imágenes.
Valor devuelto
Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.
Comentarios
Esta función miembro emula la funcionalidad del mensaje BCM_SETIMAGELIST, como se describe en la sección Botones de Windows SDK.
CButton::SetNote
Establece el texto de la nota en el control de vínculo de comando actual.
BOOL SetNote(LPCTSTR lpszNote);
Parámetros
lpszNote
[in] Puntero a una cadena Unicode que se establece como texto de la nota para el control de vínculo de comando.
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Use este método solo con controles cuyo estilo de botón sea BS_COMMANDLINK o BS_DEFCOMMANDLINK.
Este método envía el mensaje BCM_SETNOTE, que se describe en Windows SDK.
Ejemplo
En el primer ejemplo de código se define la variable m_cmdLink
, que se usa para acceder mediante programación al control de vínculo de comando. Esta variable se usa en el ejemplo siguiente.
public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;
En el ejemplo de código siguiente se establece el texto de la nota para el control de vínculo de comando.
// Set the command link text.
m_cmdLink.SetNote(_T("This is the command link note."));
CButton::SetSplitGlyph
Asocia un glifo especificado al control de botón de expansión actual.
BOOL SetSplitGlyph(TCHAR chGlyph);
Parámetros
chGlyph
[in] Carácter que especifica el glifo que se va a usar como flecha desplegable del botón de expansión.
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Use este método solo con controles que tienen el estilo de botón BS_SPLITBUTTON o BS_DEFSPLITBUTTON.
Un glifo es la representación física de un carácter en una fuente determinada. El parámetro chGlyph no se usa como glifo, sino que se usa para seleccionar un glifo de un conjunto de glifos definidos por el sistema. El glifo de flecha desplegable predeterminado se especifica mediante un carácter "6", y se parece al carácter Unicode TRIÁNGULO NEGRO APUNTANDO HACIA ABAJO (U+25BC).
Este método inicializa el miembro mask
de una estructura BUTTON_SPLITINFO con la marca BCSIF_GLYPH y el miembro himlGlyph
con el parámetro chGlyph y, a continuación, envía esa estructura en el mensaje BCM_GETSPLITINFO que se describe en Windows SDK.
CButton::SetSplitImageList
Asocia una lista de imágenes con el control de botón de expansión actual.
BOOL SetSplitImageList(CImageList* pSplitImageList);
Parámetros
pSplitImageList
[in] Puntero a un objeto CImageList que se va a asignar al control de botón de expansión actual.
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Use este método solo con controles cuyo estilo de botón sea BS_SPLITBUTTON o BS_DEFSPLITBUTTON.
Este método inicializa el miembro mask
de una estructura BUTTON_SPLITINFO con la marca BCSIF_IMAGE y el miembro himlGlyph
con el parámetro pSplitImageList y, a continuación, envía esa estructura en el mensaje BCM_GETSPLITINFO que se describe en Windows SDK.
CButton::SetSplitInfo
Especifica parámetros que determinan cómo Windows dibuja el control de botón de expansión actual.
BOOL SetSplitInfo(PBUTTON_SPLITINFO pInfo);
Parámetros
pInfo
[in] Puntero a una estructura BUTTON_SPLITINFO que define el control de botón de expansión actual.
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Use este método solo con controles cuyo estilo de botón sea BS_SPLITBUTTON o BS_DEFSPLITBUTTON.
Este método envía el mensaje BCM_SETSPLITINFO, que se describe en Windows SDK.
Ejemplo
En el primer ejemplo de código se define la variable m_splitButton
, que se usa para acceder mediante programación al control de botón de expansión.
public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;
En el ejemplo de código siguiente se cambia el glifo que se usa para la flecha desplegable del botón de expansión. En el ejemplo se sustituye un glifo de triángulo que apunta hacia arriba por el glifo de triángulo hacia abajo predeterminado. El glifo que se muestra depende del carácter que especifique en el miembro himlGlyph
de la estructura BUTTON_SPLITINFO
. El glifo de triángulo que apunta hacia abajo se especifica mediante un carácter "6" y el glifo de triángulo que apunta hacia arriba se especifica mediante un carácter "5". Para una comparación, consulte el método de conveniencia CButton::SetSplitGlyph.
/*
The drop-down arrow glyph is a function of the specified character.
The default "down" drop-down arrow glyph is specified by a
character '6'. Set the "up" arrow glyph, which is a character '5'.
See the convenience method, SetSplitGlyph(), for comparison.
*/
BUTTON_SPLITINFO bsInfo = {0};
bsInfo.mask = BCSIF_GLYPH;
TCHAR chGlyph = _T('5'); // "up" arrow glyph
bsInfo.himlGlyph = (HIMAGELIST)chGlyph;
bRC = m_splitButton.SetSplitInfo(&bsInfo);
CButton::SetSplitSize
Establece el rectángulo delimitador del componente desplegable del control de botón de expansión actual.
BOOL SetSplitSize(LPSIZE pSize);
Parámetros
pSize
[in] Puntero a una estructura SIZE que describe un rectángulo delimitador.
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Use este método solo con controles cuyo estilo de botón sea BS_SPLITBUTTON o BS_DEFSPLITBUTTON.
Cuando se expande el control de botón de expansión, puede mostrar un componente desplegable, como un control de lista o un control de paginación. Este método especifica el tamaño del rectángulo delimitador que contiene el componente desplegable.
Este método inicializa el miembro mask
de una estructura BUTTON_SPLITINFO con la marca BCSIF_SIZE y el miembro size
con el parámetro pSize y, a continuación, envía esa estructura en el mensaje BCM_GETSPLITINFO que se describe en Windows SDK.
Ejemplo
En el primer ejemplo de código se define la variable m_splitButton
, que se usa para acceder mediante programación al control de botón de expansión. Esta variable se usa en el ejemplo siguiente.
public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;
En el ejemplo de código siguiente se duplica el tamaño de la flecha desplegable del botón de expansión.
// Double the size of the split button drop-down arrow.
SIZE sz;
bRC = m_splitButton.GetSplitSize(&sz); // current size
sz.cx = sz.cx * 2;
sz.cy = sz.cy * 2;
bRC = m_splitButton.SetSplitSize(&sz);
CButton::SetSplitStyle
Establece el estilo del control de botón de expansión actual.
BOOL SetSplitStyle(UINT uSplitStyle);
Parámetros
uSplitStyle
[in] Combinación bit a bit de estilos de botón de expansión. Para más información, vea el miembro uSplitStyle
de la estructura BUTTON_SPLITINFO.
Valor devuelto
TRUE si este método se ejecuta correctamente; de lo contrario, FALSE.
Comentarios
Use este método solo con controles cuyo estilo de botón sea BS_SPLITBUTTON o BS_DEFSPLITBUTTON.
Los estilos de botón de expansión especifican la alineación, la relación de aspecto y el formato gráfico con el que Windows dibuja un icono de botón de expansión. Para más información, vea el miembro uSplitStyle
de la estructura BUTTON_SPLITINFO.
Este método inicializa el miembro mask
de una estructura BUTTON_SPLITINFO con la marca BCSIF_STYLE y el miembro uSplitStyle
con el parámetro uSplitStyle y, a continuación, envía esa estructura en el mensaje BCM_GETSPLITINFO que se describe en Windows SDK.
Ejemplo
En el primer ejemplo de código se define la variable m_splitButton
, que se usa para acceder mediante programación al control de botón de expansión.
public:
// Variable to access programatically defined command link control.
CButton m_cmdLink;
// Variable to access programatically defined split button control.
CButton m_splitButton;
En el ejemplo de código siguiente se establece el estilo de la flecha desplegable del botón de expansión. El estilo BCSS_ALIGNLEFT muestra la flecha en el lado izquierdo del botón y el estilo BCSS_STRETCH conserva las proporciones de la flecha desplegable al cambiar el tamaño del botón.
/*
Set the style of the split button drop-down arrow: Display the
arrow on the left and retain the arrow's proportions when resizing
the control.
*/
bRC = m_splitButton.SetSplitStyle(BCSS_ALIGNLEFT | BCSS_STRETCH);
CButton::SetState
Establece si un control de botón se resalta o no.
void SetState(BOOL bHighlight);
Parámetros
bHighlight
Especifica si el botón se debe resaltar. Un valor distinto de cero resalta el botón; un valor 0 quita cualquier resaltado.
Comentarios
El resaltado afecta al exterior de un control de botón. No tiene ningún efecto en el estado de comprobación de un botón de radio o casilla.
Un control de botón se resalta automáticamente cuando el usuario hace clic con el botón izquierdo del mouse y lo mantiene pulsado. El resaltado se quita cuando el usuario suelta el botón del mouse.
Ejemplo
CButton myPushButton;
// Create a push button.
myPushButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CRect(10, 10, 100, 30), pParentWnd, 1);
// Invert the highlight state of the button.
myPushButton.SetState(!(myPushButton.GetState() & 0x0004));
CButton::SetTextMargin
Llame a este método para establecer el margen del texto del objeto CButton
.
BOOL SetTextMargin(RECT* pmargin);
Parámetros
pmargin
Puntero al nuevo margen de texto.
Valor devuelto
Devuelve TRUE si la operación se realiza correctamente; de lo contrario, devuelve FALSE.
Comentarios
Esta función miembro emula la funcionalidad del mensaje BCM_SETTEXTMARGIN, como se describe en la sección Botones de Windows SDK.
Consulte también
CWnd (clase)
Gráfico de jerarquías
CWnd (clase)
CComboBox (clase)
CEdit (clase)
CListBox (clase)
CScrollBar (clase)
CStatic (clase)
CBitmapButton (clase)
CDialog (clase)